From 7b924671792787d0dd367dd0d0fede56e2d2b940 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Thu, 11 Apr 2013 18:08:42 -0700 Subject: Fix issue #7643046: Activity.getCallingPackage() bogusly returns null... ...after having to recreate the task stack Change-Id: Ia354240f3650ddb578f2116a2aa4584e9ffe8508 --- core/java/android/app/Activity.java | 14 ++++++++++---- .../java/com/android/server/am/ActivityManagerService.java | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 31074e2..a26bdbc 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -4030,10 +4030,16 @@ public class Activity extends ContextThemeWrapper * use this information to validate that the recipient is allowed to * receive the data. * - *

Note: if the calling activity is not expecting a result (that is it + *

Note: if the calling activity is not expecting a result (that is it * did not use the {@link #startActivityForResult} * form that includes a request code), then the calling package will be - * null. + * null.

+ * + *

Note: prior to {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}, + * the result from this method was unstable. If the process hosting the calling + * package was no longer running, it would return null instead of the proper package + * name. You can use {@link #getCallingActivity()} and retrieve the package name + * from that instead.

* * @return The package of the activity that will receive your * reply, or null if none. @@ -4052,12 +4058,12 @@ public class Activity extends ContextThemeWrapper * can use this information to validate that the recipient is allowed to * receive the data. * - *

Note: if the calling activity is not expecting a result (that is it + *

Note: if the calling activity is not expecting a result (that is it * did not use the {@link #startActivityForResult} * form that includes a request code), then the calling package will be * null. * - * @return String The full name of the activity that will receive your + * @return The ComponentName of the activity that will receive your * reply, or null if none. */ public ComponentName getCallingActivity() { diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index cc7905c..2417cff 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -4577,7 +4577,7 @@ public final class ActivityManagerService extends ActivityManagerNative public String getCallingPackage(IBinder token) { synchronized (this) { ActivityRecord r = getCallingRecordLocked(token); - return r != null && r.app != null ? r.info.packageName : null; + return r != null ? r.info.packageName : null; } } -- cgit v1.1