android 通过包名启动应用

通过包名启动应用

    /**
     * 通过包名启动应用
     * 如果需要启动的应用在任务栈中,则直接启动的这个应用的任务栈的顶端 activity
     * 否则启动 MainActivity
     */
    fun launchApp(context: Context, packageName: String) {
        var mainActivity: String? = null
        val packageManager = packageManager
        val intent = Intent(Intent.ACTION_MAIN)
        intent.addCategory(Intent.CATEGORY_LAUNCHER)
        intent.setFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED or Intent.FLAG_ACTIVITY_NEW_TASK)
        @SuppressLint("WrongConstant")val activities =
            packageManager.queryIntentActivities(intent, PackageManager.GET_ACTIVITIES)
        for (info in activities) {
            if (info.activityInfo.packageName.equals(packageName)) {
                mainActivity = info.activityInfo.name
                break
            }
        }
        if (mainActivity.isNullOrEmpty()) {
            return
        }
        intent.setComponent(ComponentName(packageName, mainActivity))
        startActivity(intent)
    }

猜你喜欢

转载自blog.csdn.net/dingdewei113/article/details/106924975