What platform are you building for?
Android
What framework are you building with?
Cordova
What is your build ID?
6063392c-9f84-4e0b-be10-547d9f613e05
What is your error message?
Permission denied
Please describe the issue:
Hello, I’m trying to save an image to photo’s gallery using window.imageSaver.saveBase64Image method. It works perfectly on iOS, but on Android I get a “Permissions denied” error. I’ve tried several solutions, but no sucess. If anyone can help, I’d appreciate it! Here’s the function and config.xml.
function saveImage(desenhoDoCanvas) {
var params = {data: desenhoDoCanvas, mediaScanner: true};
myApp.showIndicator();
window.imageSaver.saveBase64Image(params,
function (filePath) {
myApp.hideIndicator();
//myApp.alert(“Image saved!”, “”);
},
function (msg) {
myApp.hideIndicator();
myApp.alert("Image save error! Error: " + msg, “”);
}
);
};
<?xml version='1.0' encoding='utf-8'?>
<widget version="1.3.7" id="br.com.hrza" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
<name>Instituto</name>
<description>
Instituto - Educação e Consultoria
</description>
<author email="ates@hia.com.br" href="http://ha.com.br">
Integração e Tecnologia
</author>
<content src="index.html" />
<access origin="*" />
<allow-navigation href="*" />
<!-- //?? <access origin="cdvfile://" /> -->
<allow-navigation href="file:*" />
<allow-navigation href="data:*" />
<allow-intent href="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="SplashScreenDelay" value="2000" />
<preference name="AutoHideSplashScreen" value="true" />
<preference name="AndroidInsecureFileModeEnabled" value="true" />
<preference name="AndroidWindowSplashScreenAnimatedIcon" value="resources/splashTemplate.png" />
<preference name="AllowNewWindows" value="true" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<preference name="AndroidExtraFilesystems" value="files,files-external,documents,sdcard,root" />
<!-- //??
<platform name="android">
<config-file target="AndroidManifest.xml" parent="/*">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</config-file>
<edit-config file="AndroidManifest.xml" target="/*/uses-permission" mode="merge">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</edit-config>
<edit-config file="AndroidManifest.xml" target="/*" mode="merge">
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" />
</edit-config>
</platform>
-->
<platform name="android">
<preference name="AndroidWindowSplashScreenBackground" value="#000000" />
<feature name="http://api.phonegap.com/1.0/file" />
<feature name="http://api.phonegap.com/1.0/file" />
<feature name="File">
<param name="android-package" value="org.apache.cordova.file.FileUtils" />
</feature>
<feature name="FileTransfer">
<param name="android-package" value="org.apache.cordova.filetransfer.FileTransfer" />
</feature>
<feature name="Storage">
<param name="android-package" value="org.apache.cordova.Storage" />
</feature>
<feature name="http://api.phonegap.com/1.0/network" />
<allow-intent href="market:*" />
<!--
<config-file target="AndroidManifest.xml" parent="/*" xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
</config-file>
-->
</platform>
<platform name="ios">
<preference name="permissions" value="none" />
<preference name="WKWebViewOnly" value="true" />
<feature name="CDVWKWebViewEngine">
<param name="ios-package" value="CDVWKWebViewEngine" />
</feature>
<preference name="CordovaWebViewEngine" value="CDVWKWebViewEngine" />
<config-file parent="NSCameraUsageDescription" target="*-Info.plist">
<string>Este aplicativo precisa do acesso a camera para ler QRcode e acessar a sua unidade!</string>
</config-file>
<config-file parent="NSLocationAlwaysAndWhenInUseUsageDescription" target="*-Info.plist">
<string>Este aplicativo usa sua localização para saber se você está próximo da sua unidade!</string>
</config-file>
<config-file parent="NSLocationWhenInUseUsageDescription" target="*-Info.plist">
<string>Este aplicativo usa sua localização para saber se você está próximo da sua unidade!</string>
</config-file>
<edit-config target="NSPhotoLibraryUsageDescription" file="*-Info.plist" mode="merge">
<string>Este aplicativo usa a galeria de fotos para envio de documentação para sua unidade!</string>
</edit-config>
<edit-config target="NSPhotoLibraryAddUsageDescription" file="*-Info.plist" mode="merge">
<string>Este aplicativo usa a galeria de fotos para salvar seu certificado!</string>
</edit-config>
<feature name="File">
<param name="ios-package" value="CDVFile" />
</feature>
<feature name="FileTransfer">
<param name="ios-package" value="CDVFileTransfer" />
</feature>
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<edit-config file="*-Info.plist" mode="merge" target="CFBundleDisplayName">
<string>Instituto Avanza</string>
</edit-config>
</platform>
<preference name="DisallowOverscroll" value="true" />
<preference name="loadUrlTimeoutValue" value="100000" />
<preference name="AndroidXEnabled" value="true" />
<plugin name="cordova-plugin-statusbar"/>
<preference name="StatusBarOverlaysWebView" value="false" />
<preference name="StatusBarBackgroundColor" value="#2c7376" />
<preference name="StatusBarStyle" value="lightcontent" />
<plugin name="cordova-plugin-device"/>
<plugin name="cordova-plugin-device-motion"/>
<plugin name="cordova-plugin-device-orientation"/>
<plugin name="cordova-plugin-inappbrowser"/>
<plugin name="cordova-plugin-network-information"/>
<plugin name="cordova-plugin-vibration"/>
<plugin name="cordova-plugin-wkwebview-engine"/>
<plugin name="@ahovakimyan/cordova-plugin-wkwebviewxhrfix"/>
<plugin name="cordova-plugin-android-permissions" />
<plugin name="cordova-plugin-cleartext" />
<plugin name="cordova-plugin-wkwebview-file-xhr" version="~3.1.0"/>
<plugin name="cordova-plugin-splashscreen" version="~6.0.2"/>
<!-- IOS só funcionou quando coloquei aqui.... tirar para compilar para Android e colocar a versão 3.3.0 -->
<!--<plugin name="onesignal-cordova-plugin" spec="^2.4.1" version="~2.4.1" source="npm"/> -->
<!--<plugin name="onesignal-cordova-plugin" spec="^3.3.0" version="~3.3.0" source="npm"/>-->
<plugin name="phonegap-plugin-barcodescanner-android12"/>
<plugin name="cordova-plugin-save-image-gallery"/>
<!-- //?? <plugin name="cordova-plugin-file"/>-->
<plugin name="cordova-plugin-camera"/>
<plugin name="cordova-plugin-file@8.0.0"/>
<plugin name="cordova-plugin-file-transfer"/>
<plugin name="cordova-plugin-gallery-refresh"/>
<!--<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> -->
</widget>