bluetoothAdapter.startDiscovery()始终返回False

bluetoothAdapter.startDiscovery()始终返回False,bluetooth,discovery,Bluetooth,Discovery,这是我用来尝试启动蓝牙发现的代码。但是,我总是以“无法启动发现”消息结束(请参见下面的代码) 设备:运行Android 10 API 29的像素3 从等级文件: MinsdkVersion16 targetSdkVersion 30 从清单文件: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name=&

这是我用来尝试启动蓝牙发现的代码。但是,我总是以“无法启动发现”消息结束(请参见下面的代码)

设备:运行Android 10 API 29的像素3

从等级文件: MinsdkVersion16
targetSdkVersion 30

从清单文件:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  
<uses-permission android:name="android.permission.BLUETOOTH"/>  
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>  
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  
<uses-feature android:name="android.hardware.bluetooth" />  

谢谢

因此,尽管清单中有所有权限,但系统拒绝了应用程序的位置服务,当我转到手机菜单中的位置设置时,我的应用程序甚至没有列出。我不得不进入下拉菜单并启用“Show system”,然后出现了一堆其他名字怪异的应用程序,其中包括我的应用程序。我启用了“alwasys allow”,现在英国电信正在发现附近的设备


那么,我如何在运行时请求此权限,以确保我拥有权限而无需进入“设置”菜单?

您是否在回答框中询问问题?如果这是你问题的一部分,请编辑它。
if (bluetoothAdapter==null)  
    Log.i("BT", "First must enable BT");  
else  
{  
    if(bluetoothAdapter.getState()==bluetoothAdapter.STATE_ON)  
    {  
        Log.i("BT", "BT State on");  
        if (bluetoothAdapter.isDiscovering()) {  
            Log.i("BT", "was already discovering");  
            bluetoothAdapter.cancelDiscovery();  
        }  
        if(bluetoothAdapter.startDiscovery())  
            Log.i("BT", "starting discovery");  
        else  
            Log.i("BT", "Unable to start discovery");  

    }  
    else  
        Log.i("BT", "BT State NOT on");
}