当前位置:   article > 正文

android kotlin 通过包名启动第三方应用或着启动指定的activity_kotlin启动其他app的服务

kotlin启动其他app的服务
如果已经启动apk,则直接将apk从后台调到前台运行(类似home键之后再点击apk图标启动),如果未启动apk,则重新启动

代码可以直接使用

//通过包名启动第三方应用
    fun startLaunchAPK(context: Context, packageName: String,activityName:String) {
        LogUtils.d(tag,"启动中。。。" +packageName)
        var mainAct: String? = null
        val pkgMag = context.packageManager
        val intent = Intent(Intent.ACTION_MAIN)
        intent.addCategory(Intent.CATEGORY_LAUNCHER)
        intent.flags = Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED or Intent.FLAG_ACTIVITY_NEW_TASK
     //如果已经启动apk,则直接将apk从后台调到前台运行(类似home键之后再点击apk图标启动),如果未启动apk,则重新启动
        @SuppressLint("WrongConstant")
        val list = pkgMag.queryIntentActivities(
            intent,
            PackageManager.GET_ACTIVITIES
        )
        for (i in list.indices) {
            val info = list[i]
            if (info.activityInfo.packageName == packageName) {
                mainAct = info.activityInfo.name
                break
            }
        }
        if (TextUtils.isEmpty(mainAct)) {
            return
        }
        // 启动指定的activity页面
        //intent.component = ComponentName(packageName,activityName)
        //启动到app的主页或启动到原来留下的位置
        intent.component = ComponentName(packageName,mainAct!!)
        //启动app
        context.startActivity(intent)
        LogUtils.d(tag,"启动成功。。。")

    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
    //根据包名 判断某APP是否安装
    fun checkApkExist(context: Context,packageName: String) :Boolean{
        //  检查app是否有安装
        if (TextUtils.isEmpty(packageName))
            return  false
        try {
            val info = context.packageManager
                .getApplicationInfo(
                    packageName,
                    PackageManager.GET_UNINSTALLED_PACKAGES
                )
           // Timber.d(info.toString()) // Timber 是我打印 log 用的工具,这里只是打印一下 log
            return true
        } catch (e: PackageManager.NameNotFoundException) {
           // Timber.d(e.toString()) // Timber 是我打印 log 用的工具,这里只是打印一下 log

            return false
        }

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/288785
推荐阅读
相关标签
  

闽ICP备14008679号