From 929442d50961d36f5b3e5dacf48ab279a2209fb6 Mon Sep 17 00:00:00 2001 From: Tony Hill Date: Tue, 16 Sep 2014 11:27:35 +0100 Subject: [PATCH] Use Op package name when creating toasts Some components may be running in processes other than their base package using android:process directives. The op package name must therefore be used otherwise the AppOps check will fail due to a mismatch between the base package name and the UID. Bug: 17431423 Change-Id: I429aa46066935b964151a2ec0854f0e14c117c4e --- core/java/android/widget/Toast.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/android/widget/Toast.java b/core/java/android/widget/Toast.java index bf5e49b9fea56..dd165ae94ecb4 100644 --- a/core/java/android/widget/Toast.java +++ b/core/java/android/widget/Toast.java @@ -113,7 +113,7 @@ public class Toast { } INotificationManager service = getService(); - String pkg = mContext.getPackageName(); + String pkg = mContext.getOpPackageName(); TN tn = mTN; tn.mNextView = mNextView; @@ -387,6 +387,7 @@ public class Toast { handleHide(); mView = mNextView; Context context = mView.getContext().getApplicationContext(); + String packageName = mView.getContext().getOpPackageName(); if (context == null) { context = mView.getContext(); } @@ -406,6 +407,7 @@ public class Toast { mParams.y = mY; mParams.verticalMargin = mVerticalMargin; mParams.horizontalMargin = mHorizontalMargin; + mParams.packageName = packageName; if (mView.getParent() != null) { if (localLOGV) Log.v(TAG, "REMOVE! " + mView + " in " + this); mWM.removeView(mView);