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:
Shijian Li
2017-01-12 03:12:17 +00:00
committed by android-build-merger

View File

@@ -28,6 +28,7 @@ import android.bluetooth.IBluetoothManager;
import android.bluetooth.IBluetoothManagerCallback; import android.bluetooth.IBluetoothManagerCallback;
import android.bluetooth.IBluetoothProfileServiceConnection; import android.bluetooth.IBluetoothProfileServiceConnection;
import android.bluetooth.IBluetoothStateChangeCallback; import android.bluetooth.IBluetoothStateChangeCallback;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.ContentResolver; import android.content.ContentResolver;
@@ -761,8 +762,9 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH ADMIN permission"); "Need BLUETOOTH ADMIN permission");
if (!isEnabled() && mPermissionReviewRequired) { if (!isEnabled() && mPermissionReviewRequired
startConsentUi(packageName, callingUid, BluetoothAdapter.ACTION_REQUEST_ENABLE); && startConsentUiIfNeeded(packageName, callingUid,
BluetoothAdapter.ACTION_REQUEST_ENABLE)) {
return false; return false;
} }
} }
@@ -796,8 +798,9 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM, mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH ADMIN permission"); "Need BLUETOOTH ADMIN permission");
if (isEnabled() && mPermissionReviewRequired) { if (isEnabled() && mPermissionReviewRequired
startConsentUi(packageName, callingUid, BluetoothAdapter.ACTION_REQUEST_DISABLE); && startConsentUiIfNeeded(packageName, callingUid,
BluetoothAdapter.ACTION_REQUEST_DISABLE)) {
return false; return false;
} }
} }
@@ -817,8 +820,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
return true; return true;
} }
private void startConsentUi(String packageName, int callingUid, String intentAction) private boolean startConsentUiIfNeeded(String packageName,
throws RemoteException { int callingUid, String intentAction) throws RemoteException {
try { try {
// Validate the package only if we are going to use it // Validate the package only if we are going to use it
ApplicationInfo applicationInfo = mContext.getPackageManager() ApplicationInfo applicationInfo = mContext.getPackageManager()
@@ -830,9 +833,18 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
+ " not in uid " + callingUid); + " not in uid " + callingUid);
} }
// Permission review mode, trigger a user prompt
Intent intent = new Intent(intentAction); 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) { } catch (PackageManager.NameNotFoundException e) {
throw new RemoteException(e.getMessage()); throw new RemoteException(e.getMessage());
} }