summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shijian Li <shijianli@google.com> 2017-01-12 03:12:17 +0000
committer android-build-merger <android-build-merger@google.com> 2017-01-12 03:12:17 +0000
commitf8d62ca3598cf93a7c0dc90b1ce06b2ac0524ddc (patch)
treedb30861802aeecea26fc1bfd6da2c45290170855
parentbe7a9b89f4d04d34ada9b04a5cda0065c9606e98 (diff)
parentae21066a59d0d371d08603daf2c2863bca28137a (diff)
Sync the startConsentUiIfNeeded logics to master. We are missing the package name when starting the activity now. am: 5e7fc7ccc8
am: ae21066a59 Change-Id: I3033d6d64d35f2c9c1aafe003eef0860c1f78efc
-rw-r--r--services/core/java/com/android/server/BluetoothManagerService.java28
1 files changed, 20 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index f2eb28e7fb2a..0767f2b76f75 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -28,6 +28,7 @@ import android.bluetooth.IBluetoothManager;
import android.bluetooth.IBluetoothManagerCallback;
import android.bluetooth.IBluetoothProfileServiceConnection;
import android.bluetooth.IBluetoothStateChangeCallback;
+import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -761,8 +762,9 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH ADMIN permission");
- if (!isEnabled() && mPermissionReviewRequired) {
- startConsentUi(packageName, callingUid, BluetoothAdapter.ACTION_REQUEST_ENABLE);
+ if (!isEnabled() && mPermissionReviewRequired
+ && startConsentUiIfNeeded(packageName, callingUid,
+ BluetoothAdapter.ACTION_REQUEST_ENABLE)) {
return false;
}
}
@@ -796,8 +798,9 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH ADMIN permission");
- if (isEnabled() && mPermissionReviewRequired) {
- startConsentUi(packageName, callingUid, BluetoothAdapter.ACTION_REQUEST_DISABLE);
+ if (isEnabled() && mPermissionReviewRequired
+ && startConsentUiIfNeeded(packageName, callingUid,
+ BluetoothAdapter.ACTION_REQUEST_DISABLE)) {
return false;
}
}
@@ -817,8 +820,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
return true;
}
- private void startConsentUi(String packageName, int callingUid, String intentAction)
- throws RemoteException {
+ private boolean startConsentUiIfNeeded(String packageName,
+ int callingUid, String intentAction) throws RemoteException {
try {
// Validate the package only if we are going to use it
ApplicationInfo applicationInfo = mContext.getPackageManager()
@@ -830,9 +833,18 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
+ " not in uid " + callingUid);
}
- // Permission review mode, trigger a user prompt
Intent intent = new Intent(intentAction);
- mContext.startActivity(intent);
+ intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
+ | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
+ try {
+ mContext.startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+ // Shouldn't happen
+ Slog.e(TAG, "Intent to handle action " + intentAction + " missing");
+ return false;
+ }
+ return true;
} catch (PackageManager.NameNotFoundException e) {
throw new RemoteException(e.getMessage());
}