您的位置:首页 > 移动开发 > Android开发

Android程序间的跳转问题

2016-03-22 10:28 387 查看


跳转无非就是知道包名。貌似很简单,今天却搞了1小时才弄出来,问题出在两个程序不在同一个进程。

为此总结常见问题

常规跳转方法代码
ComponentName componetName = new ComponentName(
//这个是另外一个应用程序的包名
"cn.fotomen.camera",
//这个参数是要启动的Activity
"cn.fotomen.camera.activity.WelcomeActivity");
try {
Intent intent = new Intent();
Bundle bundle = new Bundle();
intent.putExtras(bundle);
intent.setComponent(componetName);
context.startActivity(intent);
} catch (Exception e) {
//如果没找到 可以给出提示 或者其他操作

}

问题一

java.lang.SecurityException: Permission Denial:




你的包名写对了,你的详细跳转activity也写对了,运行出现如图的权限问题。

这是什么问题,是由于两个程序不在同一个进程里导致的。

解决办法:修改两个程序的AndroidManifest.xml 将AB两个程序的<Application>标签加入如下代码

<application

            android:label="@string/app_name"

            android:icon="@drawable/icon"

            android:process="cn.fotomen"

            >

 如代码所示,红色为新增,设置他们为同一个进程。两个程序的 都要改。测试应该就OK
问题二

[INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID]





有时候看贴子可能会提示你把他们设置同一个共享的userid,但是有的虚拟机不支持。所以就不要画蛇添足了

解决方法:去掉<mainfest>标签中的 android:sharedUserId="test"一行即可

目前就发现这两个问题,如果你有新问题,请你跟帖,谢谢!

更正一下 经过  singwhatiwanna的指点 

我分析的有问题,真正阻止他的原因是因为跳转的activity的属性问题,应该设置为开放 这样其他程序就可以调用他了

 android:exported="true"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: