From a179030483a1f3f672be41797dc6e0f077ef4748 Mon Sep 17 00:00:00 2001 From: Fyodor Kupolov Date: Fri, 19 Jun 2015 15:35:11 -0700 Subject: [PATCH] Do not return devices when caller has no location permission During startLeScan, do not return devices if calling process has no location permission/appop Bug: 21852542 Change-Id: Idce8f4704558574e373e8144390f2a2fa1a7e84a --- core/java/android/bluetooth/IBluetoothGatt.aidl | 2 +- core/java/android/bluetooth/le/BluetoothLeScanner.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/java/android/bluetooth/IBluetoothGatt.aidl b/core/java/android/bluetooth/IBluetoothGatt.aidl index 72abeaf699c1d..3660be7c8eb51 100644 --- a/core/java/android/bluetooth/IBluetoothGatt.aidl +++ b/core/java/android/bluetooth/IBluetoothGatt.aidl @@ -36,7 +36,7 @@ interface IBluetoothGatt { void startScan(in int appIf, in boolean isServer, in ScanSettings settings, in List filters, - in List scanStorages); + in List scanStorages, in String callingPackage); void stopScan(in int appIf, in boolean isServer); void flushPendingBatchResults(in int appIf, in boolean isServer); void startMultiAdvertising(in int appIf, diff --git a/core/java/android/bluetooth/le/BluetoothLeScanner.java b/core/java/android/bluetooth/le/BluetoothLeScanner.java index 2e6c4f03d8b20..e09ab5676de7b 100644 --- a/core/java/android/bluetooth/le/BluetoothLeScanner.java +++ b/core/java/android/bluetooth/le/BluetoothLeScanner.java @@ -19,6 +19,7 @@ package android.bluetooth.le; import android.Manifest; import android.annotation.RequiresPermission; import android.annotation.SystemApi; +import android.app.ActivityThread; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothGatt; import android.bluetooth.BluetoothGattCallbackWrapper; @@ -313,7 +314,7 @@ public final class BluetoothLeScanner { mClientIf = clientIf; try { mBluetoothGatt.startScan(mClientIf, false, mSettings, mFilters, - mResultStorages); + mResultStorages, ActivityThread.currentOpPackageName()); } catch (RemoteException e) { Log.e(TAG, "fail to start le scan: " + e); mClientIf = -1;