为什么安卓版的应用需要粗略位置权限才能访问蓝牙



我正在开发的react-native应用程序使用蓝牙。 在IOS版本中,唯一需要用户确认的权限是尝试触发LEPairing。 但是,在应用程序的Android版本中,有一种包含以下内容的方法:

PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION)
        .then(granted => {
            if (granted === PermissionsAndroid.RESULTS.GRANTED || granted === true) {
                this.startScan();
                return;
            }
            return PermissionsAndroid.request(
                PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION, {
                    'title': I18n.t('permission_location_title'),
                    'message': I18n.t('permission_location_desc')
                }
            )
                .then(granted => {
                    if (granted === PermissionsAndroid.RESULTS.GRANTED || granted === true) {
                        this.startScan();
                    }
                })
        })
        .catch(error => {
            // TODO: error;
        });

为什么安卓版需要粗略的位置,而IOS版不需要?

正如您可以在官方文档中阅读的那样

注意: LE 信标通常与位置相关联.为了使用 蓝牙LeScanner,您必须通过以下方式请求用户的许可 声明ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION 应用清单文件中的权限。如果没有这些权限, 扫描不会返回任何结果。

与Android 10一起,引入了一些更改文档

如果您的应用以 Android 10 或更高版本为目标平台,则必须具有ACCESS_FINE_LOCATION权限,才能在 Wi-Fi、Wi-Fi 感知或蓝牙 API 中使用多种方法。以下各节列出了受影响的类和方法。

相关内容

  • 没有找到相关文章

最新更新