RequestPermissionHelperActivity: policy transparency for BT disallowed
Don't try to enable Bluetooth if it was disallowed, show a policy
transparency dialog instead.
Test: manual with CtsVerifier
Bug: 32895313
Change-Id: I9dd535a959b65f172cf2dcdd5483773d4f67366c
diff --git a/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java b/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
index bc33cce..9ea8372 100644
--- a/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
+++ b/src/com/android/settings/bluetooth/RequestPermissionHelperActivity.java
@@ -17,12 +17,14 @@
package com.android.settings.bluetooth;
import android.app.Activity;
+import android.app.admin.DevicePolicyManager;
import android.bluetooth.BluetoothAdapter;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
+import android.os.UserManager;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.util.Log;
@@ -125,8 +127,19 @@
switch (mRequest) {
case RequestPermissionActivity.REQUEST_ENABLE:
case RequestPermissionActivity.REQUEST_ENABLE_DISCOVERABLE: {
- mLocalAdapter.enable();
- setResult(Activity.RESULT_OK);
+ UserManager userManager = getSystemService(UserManager.class);
+ if (userManager.hasUserRestriction(UserManager.DISALLOW_BLUETOOTH)) {
+ // If Bluetooth is disallowed, don't try to enable it, show policy transparency
+ // message instead.
+ DevicePolicyManager dpm = getSystemService(DevicePolicyManager.class);
+ Intent intent = dpm.createAdminSupportIntent(UserManager.DISALLOW_BLUETOOTH);
+ if (intent != null) {
+ startActivity(intent);
+ }
+ } else {
+ mLocalAdapter.enable();
+ setResult(Activity.RESULT_OK);
+ }
} break;
case RequestPermissionActivity.REQUEST_DISABLE: {