如何解决bluetoothAdapter.startDiscovery始终返回False
这是我用来尝试启动蓝牙发现的代码。但是,我总是以“无法开始发现”消息结尾(请参见下面的代码)。
设备:运行Android 10 API 29的Pixel 3
来自成绩文件:
minSdkVersion 16
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" />
来自Java:
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");
}
谢谢!
解决方法
因此,尽管清单具有所有权限,但系统拒绝了该应用程序的位置服务,并且当我进入电话菜单中的“位置”设置时,我的应用程序甚至都没有列出。我必须转到下拉菜单并启用“显示系统”,然后出现了许多其他名称奇怪的应用程序,其中包括我的应用程序。我启用了“ alwasys allow”,现在BT正在发现附近的设备。
如何在运行时请求此权限,然后确保无需进入“设置”菜单即可获得权限?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。