diff options
| author | 2017-01-11 17:32:12 +0000 | |
|---|---|---|
| committer | 2017-01-11 18:07:46 +0000 | |
| commit | 5e7fc7ccc8b995dce816d2166c747a63ffe91923 (patch) | |
| tree | 174b583be37d14fa6b869f788d992b2c6a10e078 | |
| parent | 6d7dc11e01d8a127000e69c809ef963158e8c642 (diff) | |
Sync the startConsentUiIfNeeded logics to master. We are missing the package
name when starting the activity now.
Bug: 34216066
Change-Id: Ic8c8576ce2c65bc554bbf4794e169838c2ccbbe1
| -rw-r--r-- | services/core/java/com/android/server/BluetoothManagerService.java | 28 |
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 bfbd8cb38d85..d767c462c6db 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; @@ -676,8 +677,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; } } @@ -710,8 +712,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; } } @@ -734,8 +737,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() @@ -747,9 +750,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()); } |