gpt4 book ai didi

android - PhoneGap 中 Android Marshmallow 的应用权限

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:30:16 25 4
gpt4 key购买 nike

在 Android Marshmallow 中,我们需要在应用程序中分别授予对位置、文件等的访问权限。PhoneGap 应用程序中是否有任何 wan,我可以检查权限是否可用,并提示用户提供权限。

最佳答案

2016 年 2 月 16 日更新

Phonegap 立即构建 supports API 23 - 太棒了!

或者,如果您在本地构建,只需 Cordova/Phonegap CLI 6+,默认情况下您将获得 cordova-android@5+ 平台。

原始答案

目前,这当然可以使用 Cordova/Phonegap CLI,但是 Phonegap Build尚不支持 API 23 (Android 6.0/Marshmallow)。

首先,你需要使用Android平台v5.0.0(或以上)版本,使用API​​ 23。

截至今天,默认版本为 4.1.1(使用 API 22),因此您需要在添加平台时明确指定版本:

cordova platform add android@5.0.0
phonegap platform add android@5.0.0

核心插件本身正在升级以支持请求适当的 Android 6 运行时权限。因此,您需要直接从 GitHub 存储库的主分支安装“前沿”版本,而不是通过 npm 插件注册表。例如,使用:

cordova plugin add https://github.com/apache/cordova-plugin-file

这应该让你得到 4.0.1-dev 版本。

不是 npm 发布版本:

cordova plugin add cordova-plugin-file

这将为您提供 v3.0.0

请注意,主分支上的版本不是发布,因此可能包含错误。

所以替代方案(我选择了)是继续使用插件的发布版本(尚不支持请求 Android 运行时权限),但使用 cordova-diagnostic-plugin在尝试使用核心插件 API 之前请求相应核心插件所需的 Android 运行时权限。

例如要使用Location插件,继续通过npm使用release版本:

cordova plugin add cordova-plugin-geolocation

但在请求位置之前,请确保已使用诊断插件授予运行时权限:

function requestLocation(){
navigator.geolocation.getCurrentPosition(onSuccess, onError, options);
}

cordova.plugins.diagnostic.getLocationAuthorizationStatus(function(status){
if(status == "GRANTED"){
requestLocation();
}else{
cordova.plugins.diagnostic.requestLocationAuthorization(function(status){
if(status == "GRANTED"){
requestLocation();
}else{
// Handle other cases
}
}, function(error){
console.error(error);
});
}
}, onError);

关于android - PhoneGap 中 Android Marshmallow 的应用权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34117301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com