擷取其它程式的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