Cordova 权限未按预期工作

Cordova permissions not working as expected

所以这里检查权限是我写的代码

const checkFilePermission = () => {
    let perms = ["android.permission.MANAGE_EXTERNAL_STORAGE",
    ]
    let permissions = cordova.plugins.permissions;
    permissions.checkPermission("android.permission.MANAGE_EXTERNAL_STORAGE", function (status) {
        console.log('success checking permission');
        console.log('HAS MANAGE_EXTERNAL_STORAGE:', status.hasPermission);
        console.warn(status.hasPermission);
        if (!status.hasPermission) {
            permissions.requestPermissions(perms, function (status) {
                console.log('success requesting MANAGE_EXTERNAL_STORAGEN permission');
            }, function (err) {
                console.log('failed to set permission');
            });
        }
    }, function (err) {
        console.log(err);
    });
}

在日志中,我看到了这个

[INFO:CONSOLE(433)] "success checking permission", source: file:///android_asset/www/popup.js (433)
2021-02-16 01:45:34.701 11520-11520/com.hypersign.cordova I/chromium: [INFO:CONSOLE(433)] "HAS MANAGE_EXTERNAL_STORAGE:", source: file:///android_asset/www/popup.js (433)
2021-02-16 01:45:34.701 11520-11520/com.hypersign.cordova I/chromium: [INFO:CONSOLE(433)] "false", source: file:///android_asset/www/popup.js (433)
2021-02-16 01:45:34.720 4154-6960/? I/ActivityManager: START u0 {act=android.content.pm.action.REQUEST_PERMISSIONS pkg=com.google.android.packageinstaller cmp=com.google.android.packageinstaller/com.android.packageinstaller.permission.ui.GrantPermissionsActivity (has extras)} from uid 10097
2021-02-16 01:45:35.041 11520-11520/com.hypersign.cordova I/chromium: [INFO:CONSOLE(433)] "success requesting MANAGE_EXTERNAL_STORAGEN permission", source: file:///android_asset/www/popup.js (433)

您可以观察到它正在打印“成功请求外部存储”,但我从未看到权限弹出窗口,状态值始终为 false。

希望得到一些帮助

谢谢

所以我能够解决这个问题,只是转储解决方案,以便以后参考。

const checkFilePermission = () => {
    return new Promise((resolve, reject) => {
        let permissions = cordova.plugins.permissions;
        permissions.checkPermission(permissions.WRITE_EXTERNAL_STORAGE, function (status) {
            // console.log('success checking permission');
            // console.log('HAS MANAGE_EXTERNAL_STORAGE:', status.hasPermission);
            // console.warn(status.hasPermission);
            if (!status.hasPermission) {
                permissions.requestPermission(permissions.WRITE_EXTERNAL_STORAGE, function (status) {
                    // console.log('success requesting MANAGE_EXTERNAL_STORAGEN permission');
                    // console.log('HAS MANAGE_EXTERNAL_STORAGE:', status.hasPermission);
                    return resolve(true)
                }, function (err) {
                    console.log('failed to set permission');
                    return reject(err)
                });
            } else {
                return resolve(true)
            }
        }, function (err) {
            console.log(err);
            return reject(err)
        });
    });
}

请注意以下行

permissions.WRITE_EXTERNAL_STORAGE

谢谢