AndroidAndroid控件使用篇Android专题

Android中app跳转到另一个app的方法

2021-05-24  本文已影响0人  千夜零一

Java代码

方式一:包名+特定Activity路径拉起(这里进去就是想到达的指定Activity)

Intent intent = new Intent(Intent.ACTION_MAIN);
/**知道要跳转应用的包命与目标Activity*/
ComponentName componentName = new ComponentName("kuyu.com.xxxx", "kuyu.com.xxxx.xxx.login.WelcomeActivity");
intent.setComponent(componentName);
intent.putExtra("", "");//这里Intent传值
startActivity(intent);

方式二:采用包名拉起(这里就是进去启动页)

Intent intent = getPackageManager().getLaunchIntentForPackage("kuyu.com.xxxx");
if (intent != null) {
    intent.putExtra("type", "110");
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}

Kotlin代码

//第一种方式:通过包名+指定Activity路径跳转
                val intent = Intent(Intent.ACTION_MAIN)
                val componentName = ComponentName(
                    "com.example.mydemo",
                    "com.example.mydemo.activity.MainActivity"
                )
                intent.component = componentName
                intent.putExtra("", "") //这里通过Intent传值。
                startActivity(intent)
//第二种方式:通过包名跳转到另一个app的启动页
                val intent: Intent = activity!!.packageManager.getLaunchIntentForPackage("com.example.mydemo")!!
                intent.putExtra("type", "110")
                intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
                startActivity(intent)

值得注意的是:如果只是这样,还是无法通过app正常启动另一个app

具体logcat错误是:

java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cmp=com.example.mykotlindemo/.main.MainActivity (has extras) } from ProcessRecord{c4e43b9 9825:com.kc.mvvmcomponent/u0a541} (pid=9825, uid=10541) not exported from uid 10563

原因是,没有设置另一个app可被其他组件启动,需要在要被启动的指定Activity中设置:android:exported="true"

表明当前 activity 能否被另外一个Application 的组件启动,true允许启动,false不允许。默认是false。注意:该属性是四大组件都拥有的。

上一篇下一篇

猜你喜欢

热点阅读