I’m trying to retrieve sim info from my phone with Cordova / Android but I get a permission denied despite having the plug-in correctly installed and config.xml with the right permissions.
I have the following plug-ins installed:
cordova-plugin-add-swift-support 2.0.2 "AddSwiftSupport"
cordova-plugin-android-permissions 1.1.5 "Permissions"
cordova-plugin-battery-status 2.0.3 "Battery"
cordova-plugin-device 3.0.0 "Device"
cordova-plugin-file 8.1.0 "File"
cordova-plugin-geolocation 5.0.0 "Geolocation"
cordova-plugin-inappbrowser 6.0.0 "InAppBrowser"
cordova-plugin-network-information 3.0.0 "Network Information"
cordova-plugin-network-signal-strength 1.0.0 "network-signal-strength"
cordova-plugin-rssi 1.2.0 "RSSI"
cordova-plugin-sim 1.3.3 "SIM"
org.apache.cordova.signal-strength 1.0.0 "Signal"
In my config.xml:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.microphone" android:required="true" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
and then in my JS:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady()
{
checkPermissions();
}
function checkPermissions() {
var permissions = cordova.plugins.permissions;
var permissionsList = [
permissions.READ_PHONE_STATE,
permissions.READ_SMS,
permissions.READ_PHONE_NUMBERS
];
permissions.checkPermission(permissionsList[0], function(status) {
if (status.hasPermission) {
console.log("Permissions already granted");
getSimInfo();
getBatteryStatus();
} else {
console.log("Permissions not granted, requesting permissions");
permissions.requestPermissions(permissionsList, function(status) {
if (status.hasPermission) {
console.log("Permissions granted after request");
getSimInfo();
getBatteryStatus();
} else {
console.error("Permissions denied");
}
}, function(error) {
console.error("Permission request error:", error);
});
}
}, function(error) {
console.error("Permission check error:", error);
});
}
function getSimInfo() {
if (window.plugins && window.plugins.sim) {
window.plugins.sim.getSimInfo(function(result) {
console.log('Carrier: ' + result.carrierName);
document.getElementById('carrier').innerText = result.carrierName;
}, function(error) {
console.error('Error getting SIM info:', error);
});
} else {
console.error('SIM plugin not available.');
}
}
When launching the app, I get the usual permission screens for phone calls and sms, I accept them but when looking in the browser console, I get the output of console.error(“Permissions denied”);
It looks like I’m still missing something but I don’t know what.
Do you have any idea?
Thanks!