首页 > 解决方案 > Phonegap:如果第一次被拒绝,请再次请求许可

问题描述

我正在使用 Phonegap cli-8.0.0 来构建我的应用程序。

当我的应用程序第一次加载时,它会提示用户 2 个权限 - 位置和通知,这很好。

现在,如果用户不小心点击了错误的按钮并拒绝插件,是否可以检查权限是否被拒绝?如果是这样提示一个新的请求?而不是用户必须进入手机设置>隐私等...以允许权限

使用的插件:

  <plugin name="cordova-plugin-geolocation" spec="*" />
  <plugin name="phonegap-plugin-push" spec="2.1.3" />

标签: androidiospermissionsphonegapprompt

解决方案


你可以使用这个插件:https ://github.com/dpa99c/cordova-diagnostic-plugin

它使您能够检查用户是否拒绝授权并再次询问。

你可以这样做:

function requestLocationAuth(firstTime) {
    cordova.plugins.diagnostic.requestLocationAuthorization(function(status){
        var needRequest = false;
        switch(status){
            case cordova.plugins.diagnostic.permissionStatus.NOT_REQUESTED:
                needRequest = true;
                console.log("Permission not requested");
                break;
            case cordova.plugins.diagnostic.permissionStatus.DENIED_ONCE: // Only Android
            case cordova.plugins.diagnostic.permissionStatus.DENIED_ALWAYS:
                needRequest = true;
                console.log("Permission denied");
                break;
            case cordova.plugins.diagnostic.permissionStatus.GRANTED:
                console.log("Permission granted always");
                break;
            case cordova.plugins.diagnostic.permissionStatus.GRANTED_WHEN_IN_USE:
                console.log("Permission granted only when in use");
                break;
        }

        if (needRequest && firstTime) {
            requestLocationAuth(false);
        }

    }, function(error){
        console.error(error);
    }, cordova.plugins.diagnostic.locationAuthorizationMode.ALWAYS);
}

requestLocationAuth(true);

推荐阅读