Android程式間的跳轉問題

飄零雪花發表於2016-03-22


跳轉無非就是知道包名。貌似很簡單,今天卻搞了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"

相關文章