天天看點

PendingIntent打開其他應用出現 SecurityException問題

擷取其它程式的Context,通過createPackageContext(String packageName,int flags)建立的這個Context,通過PendingIntent.getActivity()點選打開其他應用出現

SecurityException問題:

E/AndroidRuntime(17055): java.lang.SecurityException: Permission Denial: getIntentSender() from pid=17055, uid=10092, (need uid=10091) is not allowed to send as package com.tencent.mm

E/AndroidRuntime(17055):     at android.os.Parcel.readException(Parcel.java:1546)

E/AndroidRuntime(17055):     at android.os.Parcel.readException(Parcel.java:1499)

E/AndroidRuntime(17055):     at android.app.ActivityManagerProxy.getIntentSender(ActivityManagerNative.java:3907)

E/AndroidRuntime(17055):     at android.app.PendingIntent.getActivity(PendingIntent.java:291)

E/AndroidRuntime(17055):     at android.app.PendingIntent.getActivity(PendingIntent.java:252)

解決方法:

(1)在AndroidManifest.xml中增加:android:sharedUserId="android.uid.system"

(2)增加系統簽名(或在Android.mk中增加LOCAL_CERTIFICATE := platform)

注意:當需要對非本應用進行操作需要用到Context對其他應用的操作,必須厘清是否時其他應用的Context