Android程序间的跳转问题

12 篇文章 0 订阅

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

特此更正 不用再改进程名称了,再次感谢  singwhatiwanna的提醒




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值