Android程序间的跳转问题

来源:互联网 发布:汉寿用友软件代理商 编辑:程序博客网 时间:2024/06/05 21:04


跳转无非就是知道包名。貌似很简单,今天却搞了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"
0 0