通过编程在Android上启用蓝牙

通过编程在Android上启用蓝牙,android,bluetooth,Android,Bluetooth,我正在尝试确定在Android上以编程方式启用蓝牙的首选方式。我发现以下任何一种技术都是有效的(至少在Android 4.0.4上是如此): 或者 前者在启用前向用户请求权限,而后者只是默默地启用蓝牙(但需要“android.permission.bluetooth\u ADMIN”权限)。是否有一种或另一种旧的/过时的和/或一种技术仅在某些设备上可用?或者这仅仅是我个人偏好的问题吗?我认为这会有所帮助 您还需要将以下权限添加到清单文件中 android.permission.BLUETOOT

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

或者


前者在启用前向用户请求权限,而后者只是默默地启用蓝牙(但需要“android.permission.bluetooth\u ADMIN”权限)。是否有一种或另一种旧的/过时的和/或一种技术仅在某些设备上可用?或者这仅仅是我个人偏好的问题吗?

我认为这会有所帮助

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

android.permission.BLUETOOTH


android.permission.BLUETOOTH_ADMIN

它在android中被清楚地提到

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

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

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

我记得在某个地方读到过这样的文章,你不应该在没有告诉用户的情况下打开东西。谷歌也不喜欢。这是真的,但这两种技术都是谷歌提供的,因此应该得到谷歌的批准。。。两者都会告诉用户,这只是他们何时告诉用户的问题(安装时与之后实际打开蓝牙时)。我知道从对客户友好的角度来看,一种可能更可取,但我也想知道这两种技术是否在任何地方都可用,或者一种或另一种仅限于某些版本,或者一种曾经是正常的方式,但现在不受欢迎,等等。嘿,特洛伊!你找到答案了吗?我本来打算在我的应用程序中使用它,但我看到了那个警告。那我该怎么办?我已经在清单文件中添加了这些权限,还有什么需要我做的吗?或者比如,如果我把我的应用程序上传到play store,那会拒绝吗?谢谢感谢您的回复,但我不需要启动蓝牙的说明(我在问题中提供了说明)。问题是关于这两种技术之间的优先性以及每种技术在Android版本中的可用性。
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();