Sync the startConsentUiIfNeeded logics to master. We are missing the package name when starting the activity now. am: 5e7fc7ccc8
am: 699e7878ef
Change-Id: I39aefb9af40cbe6a2cc833bf4e5e96890c0b13a4
This commit is contained in:
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user