mirror of
https://github.com/jrpie/Launcher.git
synced 2025-02-23 14:31:30 +01:00
Add a new activity_choose activity
This commit is contained in:
parent
2327b028ff
commit
7fd2e9c733
5 changed files with 108 additions and 73 deletions
|
@ -20,6 +20,14 @@
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
<activity android:name=".ChooseActivity"
|
||||||
|
android:screenOrientation="portrait"
|
||||||
|
tools:ignore="LockedOrientationActivity">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
|
</intent-filter>
|
||||||
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
66
app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt
Normal file
66
app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
package com.finnmglas.launcher
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.content.Intent
|
||||||
|
import android.content.pm.ApplicationInfo
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.WindowManager
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import kotlinx.android.synthetic.main.activity_choose.*
|
||||||
|
|
||||||
|
|
||||||
|
class ChooseActivity : AppCompatActivity() {
|
||||||
|
|
||||||
|
private fun listApps() {
|
||||||
|
val mainIntent = Intent(Intent.ACTION_MAIN, null)
|
||||||
|
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER)
|
||||||
|
|
||||||
|
val pm = packageManager
|
||||||
|
val apps = pm.getInstalledApplications(0)
|
||||||
|
|
||||||
|
val installedApps: MutableList<ApplicationInfo> = ArrayList()
|
||||||
|
|
||||||
|
// list
|
||||||
|
for (app in apps) {
|
||||||
|
|
||||||
|
if (app.flags and ApplicationInfo.FLAG_UPDATED_SYSTEM_APP != 0) {
|
||||||
|
//checks for flags; if flagged, check if updated system app
|
||||||
|
installedApps.add(app);
|
||||||
|
} else if (app.flags and ApplicationInfo.FLAG_SYSTEM != 0) {
|
||||||
|
//it's a system app, not interested
|
||||||
|
} else {
|
||||||
|
//in this case, it should be a user-installed app
|
||||||
|
installedApps.add(app)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ui
|
||||||
|
for (app in installedApps) {
|
||||||
|
//packageInfo.sourceDir
|
||||||
|
pm.getLaunchIntentForPackage(app.packageName)
|
||||||
|
|
||||||
|
// creating TextView programmatically
|
||||||
|
val tvdynamic = TextView(this)
|
||||||
|
tvdynamic.textSize = 20f
|
||||||
|
tvdynamic.text = app.loadLabel(pm).toString()
|
||||||
|
tvdynamic.setTextColor(Color.parseColor("#cccccc"));
|
||||||
|
|
||||||
|
tvdynamic.setOnClickListener { startActivity(pm.getLaunchIntentForPackage(app.packageName)) }
|
||||||
|
|
||||||
|
apps_list.addView(tvdynamic)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("SetTextI18n") // I do not care
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||||
|
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
|
|
||||||
|
setContentView(R.layout.activity_choose)
|
||||||
|
listApps()
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,6 +10,7 @@ import android.view.KeyEvent
|
||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.view.MotionEventCompat
|
import androidx.core.view.MotionEventCompat
|
||||||
|
@ -48,22 +49,6 @@ class MainActivity : AppCompatActivity() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun listApps() {
|
|
||||||
val mainIntent = Intent(Intent.ACTION_MAIN, null)
|
|
||||||
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER)
|
|
||||||
|
|
||||||
val pm = packageManager
|
|
||||||
val packages =
|
|
||||||
pm.getInstalledApplications(PackageManager.GET_META_DATA)
|
|
||||||
|
|
||||||
for (packageInfo in packages) {
|
|
||||||
//packageInfo.packageName
|
|
||||||
//packageInfo.sourceDir
|
|
||||||
pm.getLaunchIntentForPackage(packageInfo.packageName)
|
|
||||||
startActivity(pm.getLaunchIntentForPackage(packageInfo.packageName))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun launchInstagram(v: View){ launchApp("com.instagram.android") }
|
fun launchInstagram(v: View){ launchApp("com.instagram.android") }
|
||||||
fun launchWhatsapp(v: View){ launchApp("com.whatsapp") }
|
fun launchWhatsapp(v: View){ launchApp("com.whatsapp") }
|
||||||
|
|
||||||
|
@ -125,7 +110,8 @@ class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
|
else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
|
||||||
//listApps() // crashes
|
val intent = Intent(this, ChooseActivity::class.java);
|
||||||
|
startActivity(intent)
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
31
app/src/main/res/layout/activity_choose.xml
Normal file
31
app/src/main/res/layout/activity_choose.xml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:id="@+id/container"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="?attr/colorPrimaryDark"
|
||||||
|
tools:context=".ChooseActivity">
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
android:layout_marginStart="16dp"
|
||||||
|
android:layout_marginLeft="16dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginEnd="16dp"
|
||||||
|
android:layout_marginRight="16dp"
|
||||||
|
android:layout_marginBottom="16dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/apps_list"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical" />
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -35,60 +35,4 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<!--<com.finnmglas.launcher.FontAwesome
|
|
||||||
android:id="@+id/home"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true"
|
|
||||||
android:onClick="launchBrowser"
|
|
||||||
android:text="@string/fa_icon_home"
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="64sp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintHorizontal_bias="0.498"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintVertical_bias="0.767"
|
|
||||||
tools:ignore="MissingConstraints" />
|
|
||||||
|
|
||||||
<com.finnmglas.launcher.FontAwesome
|
|
||||||
android:id="@+id/cal"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true"
|
|
||||||
android:gravity="clip_vertical"
|
|
||||||
android:onClick="launchCalendar"
|
|
||||||
android:text="@string/fa_icon_calendar"
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="64sp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintHorizontal_bias="0.198"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintVertical_bias="0.767"
|
|
||||||
tools:ignore="MissingConstraints" />
|
|
||||||
|
|
||||||
<com.finnmglas.launcher.FontAwesome
|
|
||||||
android:id="@+id/media"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:clickable="true"
|
|
||||||
android:focusable="true"
|
|
||||||
android:gravity="clip_vertical"
|
|
||||||
android:onClick="launchCalendar"
|
|
||||||
android:text="@string/fa_icon_bars"
|
|
||||||
android:textColor="#ffffff"
|
|
||||||
android:textSize="64sp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintHorizontal_bias="0.198"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
app:layout_constraintVertical_bias="1.0"
|
|
||||||
tools:ignore="MissingConstraints" /-->
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
Add table
Reference in a new issue