Merge "Add @RequiresPermission annotation to SystemApis in BluetoothPan, open up close method as a SystemApi, and BluetoothPan class now implements AutoCloseable and CloseGuard" am: 23deb3367f am: 264da33fe5 am: 4aa1811337
Change-Id: I720267221928468a4aa5579363ad4eb341f97389
This commit is contained in:
@@ -1606,12 +1606,13 @@ package android.bluetooth {
|
||||
field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.map.profile.action.CONNECTION_STATE_CHANGED";
|
||||
}
|
||||
|
||||
public final class BluetoothPan implements android.bluetooth.BluetoothProfile {
|
||||
method protected void finalize();
|
||||
public final class BluetoothPan implements java.lang.AutoCloseable android.bluetooth.BluetoothProfile {
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public void close();
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) protected void finalize();
|
||||
method @NonNull public java.util.List<android.bluetooth.BluetoothDevice> getConnectedDevices();
|
||||
method public int getConnectionState(@Nullable android.bluetooth.BluetoothDevice);
|
||||
method public boolean isTetheringOn();
|
||||
method public void setBluetoothTethering(boolean);
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionState(@Nullable android.bluetooth.BluetoothDevice);
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isTetheringOn();
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public void setBluetoothTethering(boolean);
|
||||
method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
|
||||
field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pan.profile.action.CONNECTION_STATE_CHANGED";
|
||||
field public static final String EXTRA_LOCAL_ROLE = "android.bluetooth.pan.extra.LOCAL_ROLE";
|
||||
|
||||
@@ -30,6 +30,7 @@ import android.content.Context;
|
||||
import android.os.Binder;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
import android.util.CloseGuard;
|
||||
import android.util.Log;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
@@ -50,10 +51,11 @@ import java.util.List;
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public final class BluetoothPan implements BluetoothProfile {
|
||||
public final class BluetoothPan implements BluetoothProfile, AutoCloseable {
|
||||
private static final String TAG = "BluetoothPan";
|
||||
private static final boolean DBG = true;
|
||||
private static final boolean VDBG = false;
|
||||
private CloseGuard mCloseGuard;
|
||||
|
||||
/**
|
||||
* Intent used to broadcast the change in connection state of the Pan
|
||||
@@ -166,10 +168,15 @@ public final class BluetoothPan implements BluetoothProfile {
|
||||
mAdapter = BluetoothAdapter.getDefaultAdapter();
|
||||
mContext = context;
|
||||
mProfileConnector.connect(context, listener);
|
||||
mCloseGuard = new CloseGuard();
|
||||
mCloseGuard.open("close");
|
||||
}
|
||||
|
||||
@UnsupportedAppUsage
|
||||
/*package*/ void close() {
|
||||
/**
|
||||
* Closes the connection to the service and unregisters callbacks
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH)
|
||||
public void close() {
|
||||
if (VDBG) log("close()");
|
||||
mProfileConnector.disconnect();
|
||||
}
|
||||
@@ -178,8 +185,11 @@ public final class BluetoothPan implements BluetoothProfile {
|
||||
return mProfileConnector.getService();
|
||||
}
|
||||
|
||||
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH)
|
||||
protected void finalize() {
|
||||
if (mCloseGuard != null) {
|
||||
mCloseGuard.warnIfOpen();
|
||||
}
|
||||
close();
|
||||
}
|
||||
|
||||
@@ -316,6 +326,7 @@ public final class BluetoothPan implements BluetoothProfile {
|
||||
* @hide
|
||||
*/
|
||||
@Override
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH)
|
||||
public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) {
|
||||
if (VDBG) log("getDevicesMatchingStates()");
|
||||
final IBluetoothPan service = getService();
|
||||
@@ -335,6 +346,7 @@ public final class BluetoothPan implements BluetoothProfile {
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
@Override
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH)
|
||||
public int getConnectionState(@Nullable BluetoothDevice device) {
|
||||
if (VDBG) log("getState(" + device + ")");
|
||||
final IBluetoothPan service = getService();
|
||||
@@ -355,6 +367,7 @@ public final class BluetoothPan implements BluetoothProfile {
|
||||
*
|
||||
* @param value is whether to enable or disable bluetooth tethering
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
|
||||
public void setBluetoothTethering(boolean value) {
|
||||
String pkgName = mContext.getOpPackageName();
|
||||
if (DBG) log("setBluetoothTethering(" + value + "), calling package:" + pkgName);
|
||||
@@ -373,6 +386,7 @@ public final class BluetoothPan implements BluetoothProfile {
|
||||
*
|
||||
* @return true if tethering is on, false if not or some error occurred
|
||||
*/
|
||||
@RequiresPermission(Manifest.permission.BLUETOOTH)
|
||||
public boolean isTetheringOn() {
|
||||
if (VDBG) log("isTetheringOn()");
|
||||
final IBluetoothPan service = getService();
|
||||
|
||||
Reference in New Issue
Block a user