真的很坑,蓝牙需要定位
说明:以下信息是方案制定的依据。
蓝牙扫描需要条件:
a. 打开系统蓝牙开关。(必须)
b. 允许定位权限。(Android6.0及以上)
c. 打开定位开关。(少数手机)
定位开关只在极少数手机上需要,并且软件也无法判断哪些手机扫描蓝牙必须要打开定位开关。
所以不能预先去判断没打开定位开关就不去扫描。
目前是将其作为扫描失败的一种可能性通过弹框报错的方式提示用户。
系统api提供2种方式打开蓝牙开关:
a 静默打开。蓝牙权限被禁止后此方式失效。
mBluetoothAdapter.enable();
b 发送Intent打开。(目前农行即采用此方式)
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
enableBtIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(enableBtIntent);
高德定位检测,授权
//动态申请权限start
private void myRequetPermission() {
//1、首先声明一个数组permissions,将需要的权限都放在里面
String[] permissions = new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,