From 7fd2e9c7338e3e0560116e7c6d8463261f1eca05 Mon Sep 17 00:00:00 2001 From: Finn M Glas Date: Thu, 14 May 2020 21:31:54 +0200 Subject: [PATCH] Add a new activity_choose activity --- app/src/main/AndroidManifest.xml | 8 +++ .../com/finnmglas/launcher/ChooseActivity.kt | 66 +++++++++++++++++++ .../com/finnmglas/launcher/MainActivity.kt | 20 +----- app/src/main/res/layout/activity_choose.xml | 31 +++++++++ app/src/main/res/layout/activity_main.xml | 56 ---------------- 5 files changed, 108 insertions(+), 73 deletions(-) create mode 100644 app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt create mode 100644 app/src/main/res/layout/activity_choose.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d2e034d..7d98f90 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,6 +20,14 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt b/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt new file mode 100644 index 0000000..b32aa9e --- /dev/null +++ b/app/src/main/java/com/finnmglas/launcher/ChooseActivity.kt @@ -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 = 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() + } +} diff --git a/app/src/main/java/com/finnmglas/launcher/MainActivity.kt b/app/src/main/java/com/finnmglas/launcher/MainActivity.kt index d8daac5..dfa16cd 100644 --- a/app/src/main/java/com/finnmglas/launcher/MainActivity.kt +++ b/app/src/main/java/com/finnmglas/launcher/MainActivity.kt @@ -10,6 +10,7 @@ import android.view.KeyEvent import android.view.MotionEvent import android.view.View import android.view.WindowManager +import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity 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 launchWhatsapp(v: View){ launchApp("com.whatsapp") } @@ -125,7 +110,8 @@ class MainActivity : AppCompatActivity() { } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { - //listApps() // crashes + val intent = Intent(this, ChooseActivity::class.java); + startActivity(intent) } return true } diff --git a/app/src/main/res/layout/activity_choose.xml b/app/src/main/res/layout/activity_choose.xml new file mode 100644 index 0000000..21cfda0 --- /dev/null +++ b/app/src/main/res/layout/activity_choose.xml @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a52eda9..84c7398 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -35,60 +35,4 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - \ No newline at end of file