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

时间:2021-7-3 作者:qvyue

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

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。