安卓开发

安卓跳转外部应用指定页面

2021-03-10  本文已影响0人  蓝不蓝编程
  1. 目标app中的activity设置
<activity
    android:name=".BActivity"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
  1. 跳转方式
fun launchPage(appPackageName: String, activityPath: String) {
        val intent = Intent()
        val comp = ComponentName(appPackageName, activityPath)
        intent.component = comp
        intent.putExtra("other", "true")
        intent.action = "android.intent.action.VIEW"
        startActivity(intent)
    }

调用样例:

launchPage("com.example.launchmodedemo", "com.example.launchmodedemo.BActivity")

如果是跳转其他应用,不指定activity,可以用下面方式:

 /**
     * 跳转到指定app,如跳转到qq
     * launchApp(this, "com.tencent.mobileqq")
     */
    private fun launchApp(context: Context, appPackageName: String) {
        //判断当前手机是否有要跳入的app
        if (isAppInstalled(context, appPackageName)) {
            //如果有根据包名跳转
            context.startActivity(context.packageManager.getLaunchIntentForPackage(appPackageName))
        } else {
            //如果没有,走进入系统商店找到这款APP,提示你去下载这款APP的程序
            goToMarket(context, appPackageName)
        }
    }

    //这里是进入应用商店,下载指定APP的方法。
    private fun goToMarket(context: Context, packageName: String) {
        val uri: Uri = Uri.parse("market://details?id=$packageName")
        val goToMarket = Intent(Intent.ACTION_VIEW, uri)
        try {
            context.startActivity(goToMarket)
        } catch (e: Exception) {
        }
    }

    //这里是判断APP中是否有相应APP的方法
    private fun isAppInstalled(context: Context, packageName: String): Boolean {
        return try {
            context.packageManager.getPackageInfo(packageName, 0)
            true
        } catch (e: Exception) {
            e.printStackTrace()
            false
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读