Reputation: 4886
So to check permission here is the code that I have written
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);
});
}
In the logs, I see this
[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)
You can observe that it's printing the "Success requesting External storage" but I never see a permission popup and the value of status is always false.
Would appreciate some help
Thanks
Upvotes: 2
Views: 1403
Reputation: 4886
So I was able to fix this, Just dumping the solution so it can be referenced for later use.
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)
});
});
}
Please observe the following line
permissions.WRITE_EXTERNAL_STORAGE
Thanks
Upvotes: 1