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。注意:该属性是四大组件都拥有的。