am 18b1e79a: Bluetooth API: Do not allow apps to programmatically make BT discoverable.

Merge commit '18b1e79a123b979d25bfa5d0b0ee5d0382dbd64b' into eclair-plus-aosp

* commit '18b1e79a123b979d25bfa5d0b0ee5d0382dbd64b':
  Bluetooth API: Do not allow apps to programmatically make BT discoverable.
This commit is contained in:
Nick Pelly
2009-09-24 19:47:03 -07:00
committed by Android Git Automerger
4 changed files with 65 additions and 49 deletions

View File

@ -25927,19 +25927,6 @@
<parameter name="name" type="java.lang.String">
</parameter>
</method>
<method name="setScanMode"
return="boolean"
abstract="false"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
<parameter name="mode" type="int">
</parameter>
</method>
<method name="startDiscovery"
return="boolean"
abstract="false"
@ -25984,6 +25971,17 @@
visibility="public"
>
</field>
<field name="ACTION_REQUEST_DISCOVERABLE"
type="java.lang.String"
transient="false"
volatile="false"
value="&quot;android.bluetooth.adapter.action.REQUEST_DISCOVERABLE&quot;"
static="true"
final="true"
deprecated="not deprecated"
visibility="public"
>
</field>
<field name="ACTION_SCAN_MODE_CHANGED"
type="java.lang.String"
transient="false"
@ -26017,6 +26015,17 @@
visibility="public"
>
</field>
<field name="EXTRA_DISCOVERABLE_DURATION"
type="java.lang.String"
transient="false"
volatile="false"
value="&quot;android.bluetooth.adapter.extra.DISCOVERABLE_DURATION&quot;"
static="true"
final="true"
deprecated="not deprecated"
visibility="public"
>
</field>
<field name="EXTRA_LOCAL_NAME"
type="java.lang.String"
transient="false"
@ -27063,28 +27072,6 @@
>
<implements name="android.os.Parcelable">
</implements>
<method name="cancelBondProcess"
return="boolean"
abstract="false"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
</method>
<method name="createBond"
return="boolean"
abstract="false"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
</method>
<method name="createRfcommSocket"
return="android.bluetooth.BluetoothSocket"
abstract="false"
@ -27155,17 +27142,6 @@
visibility="public"
>
</method>
<method name="removeBond"
return="boolean"
abstract="false"
native="false"
synchronized="false"
static="false"
final="false"
deprecated="not deprecated"
visibility="public"
>
</method>
<method name="writeToParcel"
return="void"
abstract="false"

View File

@ -103,6 +103,38 @@ public final class BluetoothAdapter {
*/
public static final int STATE_TURNING_OFF = 13;
/**
* Activity Action: Show a system activity that requests discoverable mode.
* <p>Discoverable mode is equivalent to {@link
* #SCAN_MODE_CONNECTABLE_DISCOVERABLE}. It allows remote devices to see
* this Bluetooth adapter when they perform a discovery.
* <p>For privacy, Android is not by default discoverable.
* <p>The sender can optionally use extra field {@link
* #EXTRA_DISCOVERABLE_DURATION} to request the duration of
* discoverability. Currently the default duration is 120 seconds, and
* maximum duration is capped at 300 seconds for each request.
* <p>Notification of the result of this activity is posted using the
* {@link android.app.Activity#onActivityResult} callback. The
* <code>resultCode</code>
* will be the duration (in seconds) of discoverability, or a negative
* value if the user rejected discoverability.
* <p>Applications can also listen for {@link #ACTION_SCAN_MODE_CHANGED}
* for global notification whenever the scan mode changes.
* <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
*/
@SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
public static final String ACTION_REQUEST_DISCOVERABLE =
"android.bluetooth.adapter.action.REQUEST_DISCOVERABLE";
/**
* Used as an optional int extra field in {@link
* #ACTION_REQUEST_DISCOVERABLE} intents to request a specific duration
* for discoverability in seconds. The current default is 120 seconds, and
* requests over 300 seconds will be capped. These values could change.
*/
public static final String EXTRA_DISCOVERABLE_DURATION =
"android.bluetooth.adapter.extra.DISCOVERABLE_DURATION";
/**
* Broadcast Action: Indicates the Bluetooth scan mode of the local Adapter
* has changed.
@ -388,10 +420,15 @@ public final class BluetoothAdapter {
* {@link #SCAN_MODE_NONE},
* {@link #SCAN_MODE_CONNECTABLE},
* {@link #SCAN_MODE_CONNECTABLE_DISCOVERABLE}.
* <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
* <p>Requires {@link android.Manifest.permission#WRITE_SECURE_SETTINGS}
* <p>Applications cannot set the scan mode. They should use
* <code>startActivityForResult(
* BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE})
* </code>instead.
*
* @param mode valid scan mode
* @return true if the scan mode was set, false otherwise
* @hide
*/
public boolean setScanMode(int mode) {
try {

View File

@ -427,6 +427,7 @@ public final class BluetoothDevice implements Parcelable {
* <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}.
*
* @return false on immediate error, true if bonding will begin
* @hide
*/
public boolean createBond() {
try {
@ -440,6 +441,7 @@ public final class BluetoothDevice implements Parcelable {
* <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}.
*
* @return true on sucess, false on error
* @hide
*/
public boolean cancelBondProcess() {
try {
@ -456,6 +458,7 @@ public final class BluetoothDevice implements Parcelable {
* <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}.
*
* @return true on sucess, false on error
* @hide
*/
public boolean removeBond() {
try {

View File

@ -680,8 +680,8 @@ public class BluetoothService extends IBluetooth.Stub {
}
public synchronized boolean setScanMode(int mode) {
mContext.enforceCallingOrSelfPermission(BLUETOOTH_ADMIN_PERM,
"Need BLUETOOTH_ADMIN permission");
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS,
"Need WRITE_SECURE_SETTINGS permission");
boolean pairable = false;
boolean discoverable = false;
switch (mode) {