以编程方式在Android上启用蓝牙

时间:2014-03-21 15:14:52

标签: android bluetooth

我试图确定在Android上以编程方式启用蓝牙的首选方式。我发现以下任何一种技术都有效(至少在Android 4.0.4上......):

public class MyActivity extends Activity {
    public static final int MY_BLUETOOTH_ENABLE_REQUEST_ID = 6;
    ...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ...
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, MY_BLUETOOTH_ENABLE_REQUEST_ID);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == MY_BLUETOOTH_ENABLE_REQUEST_ID) {
            if (resultCode == RESULT_OK) {
                // Request granted - bluetooth is turning on...
            }
            if (resultCode == RESULT_CANCELED) {
                // Request denied by user, or an error was encountered while 
                // attempting to enable bluetooth
            }
        }
    }

...或

BluetoothAdapter.getDefaultAdapter().enable();

前者在启用前要求用户获得权限,而后者只是默默启用蓝牙(但需要" android.permission.BLUETOOTH_ADMIN"权限)。是一种或其他旧的/过时的和/或是一种技术仅在某些设备上可用吗?或者仅仅是我个人喜欢的问题?

3 个答案:

答案 0 :(得分:4)

Android Doc

中明确提到了这一点
  

未经用户同意,不得启用蓝牙。如果要打开蓝牙以创建无线连接,则应使用ACTION_REQUEST_ENABLE Intent,这将引发一个请求用户打开蓝牙权限的对话框。 enable()方法仅适用于包含用于更改系统设置的用户界面的应用程序,例如"电源管理器"应用

这两种技术都可行。您必须根据您的目的和要求进行选择。 希望它能回答你的问题。

答案 1 :(得分:1)

我认为这可能会有所帮助......

https://stackoverflow.com/a/20142972/1386533

您还需要将以下权限添加到清单文件中。

android.permission.BLUETOOTH,

android.permission.BLUETOOTH_ADMIN

答案 2 :(得分:0)

这对我有用...... BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();         mBluetoothAdapter.enable();