diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index bf695311e89eb..b5efb73225d67 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -1668,10 +1668,13 @@ public final class LoadedApk { static final class ReceiverDispatcher { final static class InnerReceiver extends IIntentReceiver.Stub { + final IApplicationThread mApplicationThread; final WeakReference mDispatcher; final LoadedApk.ReceiverDispatcher mStrongRef; - InnerReceiver(LoadedApk.ReceiverDispatcher rd, boolean strong) { + InnerReceiver(IApplicationThread thread, LoadedApk.ReceiverDispatcher rd, + boolean strong) { + mApplicationThread = thread; mDispatcher = new WeakReference(rd); mStrongRef = strong ? rd : null; } @@ -1718,7 +1721,8 @@ public final class LoadedApk { if (extras != null) { extras.setAllowFds(false); } - mgr.finishReceiver(this, resultCode, data, extras, false, intent.getFlags()); + mgr.finishReceiver(mApplicationThread.asBinder(), resultCode, data, + extras, false, intent.getFlags()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } @@ -1825,7 +1829,7 @@ public final class LoadedApk { } mAppThread = appThread; - mIIntentReceiver = new InnerReceiver(this, !registered); + mIIntentReceiver = new InnerReceiver(mAppThread, this, !registered); mReceiver = receiver; mContext = context; mActivityThread = activityThread;