离子android要求位置许可

Mag*_*gon 3 android cordova android-permissions ionic-framework cordova-plugins

我想要完成的事情:
如果用户的位置服务阻止我默认获取他/她手机的位置,我想询问16-25之间的每个API的位置许可(Android 4.1.2-7.1.1 )
因为在iOS上我没有遇到这个问题我想专注于android.

我已经尝试过的:

上面提到的插件总是返回,hasPermission: true即使在设备上拒绝访问位置,所以它对我不起作用.

我还没有尝试过:

诊断插件说明我已经在我的理解中选择了API 23及以上或API 22及以下.(<preference name="android-targetSdkVersion" value="22"/>是最低目标版本.)但我不知道它是否仍适用于较低的API版本.

我的设置:

  • Cordova CLI:6.2.0
  • Gulp CLI&local:3.9.1
  • 离子框架:1.3.1
  • 离子CLI:1.7.16
  • 节点:4.2.2
  • 设备android:5.0.1
  • 期望的构建目标:16
  • 目前的构建目标:22

Dav*_*den 10

诊断插件说明我已经在我的理解中选择了API 23及以上或API 22及以下.(是最低目标版本.)但我不知道它是否仍适用于较低的API版本.

cordova-diagnostic-plugin API级别要求基于用于构建的SDK版本,而不是目标设备上运行的API版本.因此,使用SDK for API 23构建的应用程序(Android 6.0)仍将适用于运行旧版Android的设备.

您需要将构建目标设置为API 23(或更高版本)以使用插件的主要版本(cordova.plugins.diagnostic而不是)进行构建,cordova.plugins.diagnostic.api-22因为它包含需要API 23+构建环境的运行时权限代码.

如果用户的位置服务阻止我默认获取他/她手机的位置,我想询问16-25之间的每个API的位置许可(Android 4.1.2-7.1.1)

这有两个不同的方面:

要求16-25之间的每个API的位置权限(Android 4.1.2-7.1.1)

API 23(Android 6.0)中引入了Android运行时权限

您可以使用isLocationAuthorized()检查应用是否具有位置授权.在运行Android 5(API 22)或更低版本的设备上调用它将始终返回TRUE,因为已在安装时授予权限.

您可以通过requestLocationAuthorization()请求运行时权限以使用位置.在运行Android 5(API 22)或更低版本的设备上调用它将不起作用,因为在安装时已授予权限.

定位服务阻止我获取他/她手机的位置

您可以使用isLocationEnabled()检查用户是否已关闭位置.

如果位置已关闭,您可以使用switchToLocationSettings()打开设备位置设置页面以允许用户启用位置服务,或者您可以使用cordova-plugin-request-location-accuracy来请求所需的位置准确度,而无需用户在位置设置页面上手动执行此操作.

免责声明:我是cordova-diagnostic-plugincordova-plugin-request-location-accuracy的作者.