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
谢谢
所以这里检查权限是我写的代码
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
谢谢