In permission review mode, always request user's consent to toggle BT.

Bug: 33155221
Test: Manual: flash the watch, check that the consent UI was
      displayed in both apps (the one with CompileSDK=21 and
      TargetSDK=21, and the one with CompileSDK=25 and
      TargetSDK=25).
Change-Id: Ic1ed987bbaf282892a2aef354a8ca0add2c829ba
This commit is contained in:
Ivan Podogov
2016-12-05 16:46:52 +00:00
parent 1471ad3ea7
commit afababd4d8

View File

@@ -717,9 +717,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH ADMIN permission");
if (!isEnabled() && mPermissionReviewRequired
&& startConsentUiIfNeeded(packageName, callingUid,
BluetoothAdapter.ACTION_REQUEST_ENABLE)) {
if (!isEnabled() && mPermissionReviewRequired) {
startConsentUi(packageName, callingUid, BluetoothAdapter.ACTION_REQUEST_ENABLE);
return false;
}
}
@@ -753,9 +752,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH ADMIN permission");
if (isEnabled() && mPermissionReviewRequired
&& startConsentUiIfNeeded(packageName, callingUid,
BluetoothAdapter.ACTION_REQUEST_DISABLE)) {
if (isEnabled() && mPermissionReviewRequired) {
startConsentUi(packageName, callingUid, BluetoothAdapter.ACTION_REQUEST_DISABLE);
return false;
}
}
@@ -775,8 +773,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
return true;
}
private boolean startConsentUiIfNeeded(String packageName,
int callingUid, String intentAction) throws RemoteException {
private void startConsentUi(String packageName, int callingUid, String intentAction)
throws RemoteException {
try {
// Validate the package only if we are going to use it
ApplicationInfo applicationInfo = mContext.getPackageManager()
@@ -788,16 +786,12 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
+ " not in uid " + callingUid);
}
// Legacy apps in permission review mode trigger a user prompt
if (applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) {
Intent intent = new Intent(intentAction);
mContext.startActivity(intent);
return true;
}
// Permission review mode, trigger a user prompt
Intent intent = new Intent(intentAction);
mContext.startActivity(intent);
} catch (PackageManager.NameNotFoundException e) {
throw new RemoteException(e.getMessage());
}
return false;
}
public void unbindAndFinish() {