Really resolve merge conflicts of 903d641 to nyc-mr2-dev-plus-aosp
Test: Treehugger Change-Id: Idd62dc36b4257f31148b29dec19a2785043e3d11
This commit is contained in:
@@ -35,6 +35,7 @@ import android.content.Context;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.ServiceConnection;
|
import android.content.ServiceConnection;
|
||||||
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.UserInfo;
|
import android.content.pm.UserInfo;
|
||||||
import android.database.ContentObserver;
|
import android.database.ContentObserver;
|
||||||
@@ -155,6 +156,8 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
|
|||||||
private final Map <Integer, ProfileServiceConnections> mProfileServices =
|
private final Map <Integer, ProfileServiceConnections> mProfileServices =
|
||||||
new HashMap <Integer, ProfileServiceConnections>();
|
new HashMap <Integer, ProfileServiceConnections>();
|
||||||
|
|
||||||
|
private final boolean mPermissionReviewRequired;
|
||||||
|
|
||||||
private void registerForAirplaneMode(IntentFilter filter) {
|
private void registerForAirplaneMode(IntentFilter filter) {
|
||||||
final ContentResolver resolver = mContext.getContentResolver();
|
final ContentResolver resolver = mContext.getContentResolver();
|
||||||
final String airplaneModeRadios = Settings.Global.getString(resolver,
|
final String airplaneModeRadios = Settings.Global.getString(resolver,
|
||||||
@@ -263,6 +266,11 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
|
|||||||
mHandler = new BluetoothHandler(IoThread.get().getLooper());
|
mHandler = new BluetoothHandler(IoThread.get().getLooper());
|
||||||
|
|
||||||
mContext = context;
|
mContext = context;
|
||||||
|
|
||||||
|
mPermissionReviewRequired = Build.PERMISSIONS_REVIEW_REQUIRED
|
||||||
|
|| context.getResources().getBoolean(
|
||||||
|
com.android.internal.R.bool.config_permissionReviewRequired);
|
||||||
|
|
||||||
mBluetooth = null;
|
mBluetooth = null;
|
||||||
mBluetoothBinder = null;
|
mBluetoothBinder = null;
|
||||||
mBluetoothGatt = null;
|
mBluetoothGatt = null;
|
||||||
@@ -717,14 +725,24 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean disable(boolean persist) {
|
public boolean disable(String packageName, boolean persist) throws RemoteException {
|
||||||
mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
|
final int callingUid = Binder.getCallingUid();
|
||||||
"Need BLUETOOTH ADMIN permissicacheNameAndAddresson");
|
final boolean callerSystem = UserHandle.getAppId(callingUid) == Process.SYSTEM_UID;
|
||||||
|
|
||||||
if ((Binder.getCallingUid() != Process.SYSTEM_UID) &&
|
if (!callerSystem) {
|
||||||
(!checkIfCallerIsForegroundUser())) {
|
if (!checkIfCallerIsForegroundUser()) {
|
||||||
Slog.w(TAG,"disable(): not allowed for non-active and non system user");
|
Slog.w(TAG, "disable(): not allowed for non-active and non system user");
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
|
||||||
|
"Need BLUETOOTH ADMIN permission");
|
||||||
|
|
||||||
|
if (isEnabled() && mPermissionReviewRequired
|
||||||
|
&& startConsentUiIfNeeded(packageName, callingUid,
|
||||||
|
BluetoothAdapter.ACTION_REQUEST_DISABLE)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DBG) {
|
if (DBG) {
|
||||||
@@ -745,6 +763,31 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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()
|
||||||
|
.getApplicationInfoAsUser(packageName,
|
||||||
|
PackageManager.MATCH_DEBUG_TRIAGED_MISSING,
|
||||||
|
UserHandle.getUserId(callingUid));
|
||||||
|
if (applicationInfo.uid != callingUid) {
|
||||||
|
throw new SecurityException("Package " + callingUid
|
||||||
|
+ " 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;
|
||||||
|
}
|
||||||
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
|
throw new RemoteException(e.getMessage());
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public void unbindAndFinish() {
|
public void unbindAndFinish() {
|
||||||
if (DBG) {
|
if (DBG) {
|
||||||
Slog.d(TAG,"unbindAndFinish(): " + mBluetooth +
|
Slog.d(TAG,"unbindAndFinish(): " + mBluetooth +
|
||||||
|
|||||||
Reference in New Issue
Block a user