Bladeren bron

chore: filter apps when adding new

beautusg 7 jaren geleden
bovenliggende
commit
7d418e67fb

+ 2 - 1
app/src/main/java/com/sduduzog/slimlauncher/ui/options/AddAppFragment.kt

@@ -36,8 +36,9 @@ class AddAppFragment : BaseFragment(), OnAppClickedListener {
             viewModel = ViewModelProviders.of(it).get(MainViewModel::class.java)
         } ?: throw Error("How the fuck is this fragment alive while there's no activity?")
         viewModel.installedApps.observe(this, Observer {
+            val homeApps = viewModel.apps.value.orEmpty()
             it?.let { apps ->
-                adapter.setItems(apps)
+                adapter.setItems(apps.filterNot { app -> homeApps.map { homeApp -> homeApp.packageName }.contains(app.packageName) })
                 add_app_fragment_progress_bar.visibility = View.GONE
             } ?: run {
                 add_app_fragment_progress_bar.visibility = View.VISIBLE

+ 30 - 3
app/src/main/java/com/sduduzog/slimlauncher/utils/LoadInstalledApps.kt

@@ -4,13 +4,20 @@ import android.content.Intent
 import android.content.pm.PackageManager
 import android.content.pm.ResolveInfo
 import android.os.AsyncTask
+import android.os.Build
+import android.provider.AlarmClock
+import android.provider.MediaStore
 import com.sduduzog.slimlauncher.data.App
 import com.sduduzog.slimlauncher.data.MainViewModel
 import java.util.*
 
-class LoadInstalledApps(val viewModel: MainViewModel) : AsyncTask<PackageManager, Unit, List<App>>() {
+class LoadInstalledApps(private val viewModel: MainViewModel?) : AsyncTask<PackageManager, Unit, List<App>>() {
+
+    private lateinit var packageManager: PackageManager
+
     override fun doInBackground(vararg params: PackageManager): List<App> {
         val pm = params[0]
+        packageManager = pm
         val list = mutableListOf<App>()
         val main = Intent(Intent.ACTION_MAIN, null)
         main.addCategory(Intent.CATEGORY_LAUNCHER)
@@ -22,10 +29,30 @@ class LoadInstalledApps(val viewModel: MainViewModel) : AsyncTask<PackageManager
             val app = App(activitiesList[i].loadLabel(pm).toString(), activity.applicationInfo.packageName, activity.name)
             list.add(app)
         }
-        return list
+
+        val filter = mutableListOf<String>()
+
+        Intent(Intent.ACTION_DIAL).resolveActivity(packageManager)?.let {
+            filter.add(it.packageName)
+        }
+        Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_APP_CALENDAR).resolveActivity(packageManager)?.let {
+            filter.add(it.packageName)
+        }
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+            Intent(AlarmClock.ACTION_SHOW_ALARMS).resolveActivity(packageManager)?.let {
+                filter.add(it.packageName)
+            }
+        }
+
+        Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA).resolveActivity(packageManager)?.let {
+            filter.add(it.packageName)
+        }
+
+        return list.filterNot { filter.contains(it.packageName) }
     }
 
     override fun onPostExecute(result: List<App>) {
-        viewModel.installedApps.value = result
+        viewModel?.installedApps?.value = result
     }
 }