作为一个有系统权限的Launcher应该干的事情

来源:互联网 发布:富阳法院拍卖淘宝网 编辑:程序博客网 时间:2024/06/04 17:44

一个有个性的Launcher应该干的事情有以下

第一步是把自己注册成默认程序
private fun makeSelfDefaultLauncher() {    val filter = IntentFilter()    filter.addAction(Intent.ACTION_MAIN)    filter.addCategory(Intent.CATEGORY_LAUNCHER)    filter.addCategory(Intent.CATEGORY_HOME)    filter.addCategory(Intent.CATEGORY_DEFAULT)    val component = ComponentName(applicationContext.packageName, LaunceActivity::class.qualifiedName)    val components = arrayOf<ComponentName>(ComponentName("com.android.launcher", "com.android.launcher.Launcher"), component)    val pm = packageManager    pm.clearPackagePreferredActivities("com.android.launcher")    pm.addPreferredActivity(filter, IntentFilter.MATCH_CATEGORY_EMPTY, components, component)}
第二步删除旧版的程序
private fun removeDiscardLauncher() {    val packages = packageManager.getInstalledPackages(0)    for (pg in packages) {        val pgName = pg.applicationInfo.packageName        if (pgName.contains("com.jian.launcher")) {            val info = packageManager.getPackageInfo(pgName, PackageManager.GET_CONFIGURATIONS)            val pgVersion = info.versionCode            if (pgVersion < BuildConfig.VERSION_CODE) {                uninstallAppSilence(pgName)            }        }    }}private fun uninstallAppSilence(packageName: String) {    val cmd = "system/bin/pm uninstall " + packageName    var process: Process? = null    try {        process = Runtime.getRuntime().exec(cmd)        process.waitFor();    } catch (e: Exception) {        e.printStackTrace()    } finally {        try {            process?.destroy()        } catch (e: Exception) {            e.printStackTrace()        }    }}
原创粉丝点击