You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Uwe Klawitter (JIRA)" <ji...@apache.org> on 2016/10/31 10:39:59 UTC

[jira] [Created] (CB-12093) "Permission Denial" on fileSystemEntry.getFile

Uwe Klawitter created CB-12093:
----------------------------------

             Summary: "Permission Denial" on fileSystemEntry.getFile
                 Key: CB-12093
                 URL: https://issues.apache.org/jira/browse/CB-12093
             Project: Apache Cordova
          Issue Type: Bug
          Components: Plugin File
    Affects Versions: 4.3.0
         Environment: android 6.0.1
cordova 6.3.1
cordova-file-plugin 4.3.0
            Reporter: Uwe Klawitter


Hi,

i try to create a copy of a File thats URI is created by the Android FileChooser. Reading the file works, but when i try to get the parent and call getFile, I get an "Permission Denial" error.

This is the given URI:\\
{{content://com.android.externalstorage.documents/document/primary%3ADCIM%2FMA128%2Fparam_MA128_SX20_WWS24_S%C3%9CSSTD_FBK_RadgemRF_FBHgemTele.txt}}

This is my code:
{code:javascript}
console.log("resolving file system " + uri);
window.resolveLocalFileSystemURL(uri, function (fileSystemEntry) {
    console.log("getting parent from: " + uri);
    fileSystemEntry.getParent(function (parent) {
        console.log("creating backup file: " + JSON.stringify(parent));
        parent.getFile("myBackup.txt", {create: true, exclusive: false}, function (backupFileEntry) {
            callback(null, backupFileEntry);
        }, callback);
    }, callback);
}, callback);
{code}

config.xml:
{code:xml}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<widget id="com.ionicframework.solvisparam100159" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <name>Solvis Param</name>
  <description>
        An Ionic Framework and Cordova project.
    </description>
  <author email="you@example.com" href="http://example.com.com/">
        Your Name Here
    </author>
  <content src="index.html"/>
  <access origin="*"/>
  <preference name="webviewbounce" value="false"/>
  <preference name="UIWebViewBounce" value="false"/>
  <preference name="DisallowOverscroll" value="true"/>
  <preference name="SplashScreenDelay" value="2000"/>
  <preference name="FadeSplashScreenDuration" value="2000"/>
  <preference name="android-minSdkVersion" value="19"/>
  <preference name="BackupWebStorage" value="none"/>
  <preference name="SplashScreen" value="screen"/>
  <preference name="AndroidPersistentFileLocation" value="Compatibility"/>
  <preference name="AndroidExtraFilesystems" value="files,files-external,documents,sdcard,cache,cache-external,assets,root"/>
  <feature name="StatusBar">
    <param name="ios-package" onload="true" value="CDVStatusBar"/>
  </feature>
  <plugin name="cordova-plugin-file" spec="~4.3.0"/>
  <plugin name="com.megster.cordova.FileChooser" spec="https://github.com/uklawitter/cordova-filechooser.git"/>
  <plugin name="cordova-plugin-android-permissions" spec="https://github.com/uklawitter/cordova-plugin-android-permission.git"/>
  <plugin name="cordova-plugin-console" spec="~1.0.4"/>
  <plugin name="cordova-plugin-whitelist" spec="~1.2.2"/>
  <plugin name="ionic-plugin-keyboard" spec="~2.2.1"/>
  <plugin name="cordova-plugin-splashscreen" spec="x~3.2.2"/>
  <plugin name="cordova-plugin-device" spec="~1.1.3"/>
  <plugin name="cordova-plugin-statusbar" spec="~2.1.3"/>
  <plugin name="cordova-plugin-settings-hook" spec="~0.2.3"/>
  <platform name="android">
    <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png"/>
    <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png"/>
    <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png"/>
    <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png"/>
    <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png"/>
    <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png"/>
    <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png"/>
    <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png"/>
    <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png"/>
    <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png"/>
    <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png"/>
    <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png"/>
    <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png"/>
    <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png"/>
    <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png"/>
    <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png"/>
    <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png"/>
    <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png"/>
    <config-file parent="/*" target="AndroidManifest.xml">
    </config-file>
  </platform>
  <icon src="resources/android/icon/drawable-xhdpi-icon.png"/>
</widget>
{code}

Log:
{noformat}
10-31 11:23:03.377 22424 22424 I chromium: [INFO:CONSOLE(73)] "resolving file system content://com.android.externalstorage.documents/document/primary%3ADCIM%2FMA128%2Fparam_MA128_SX20_WWS24_S%C3%9CSSTD_FBK_RadgemRF_FBHgemTele.txt", source: file:///android_asset/www/js/import/import.js (73)
10-31 11:23:03.379   197   810 D audio_hw_primary: select_devices: out_snd_device(2: speaker) in_snd_device(0: none)
10-31 11:23:03.379   197   810 D msm8974_platform: platform_send_audio_calibration: sending audio calibration for snd_device(2) acdb_id(15)
10-31 11:23:03.379   197   810 D audio_hw_primary: enable_snd_device: snd_device(2: speaker)
10-31 11:23:03.381   197   810 D audio_hw_primary: enable_audio_route: apply and update mixer path: low-latency-playback
10-31 11:23:03.414  2363  2363 W Binder_C: type=1400 audit(0.0:24379): avc: denied { ioctl } for path="socket:[1314222]" dev="sockfs" ino=1314222 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0
10-31 11:23:03.414  2363  2363 W Binder_C: type=1400 audit(0.0:24380): avc: denied { ioctl } for path="socket:[1314222]" dev="sockfs" ino=1314222 ioctlcmd=7704 scontext=u:r:system_server:s0 tcontext=u:r:system_server:s0 tclass=unix_stream_socket permissive=0
10-31 11:23:03.489  8164  8195 D OpenGLRenderer: endAllStagingAnimators on 0x9f527a00 (ListView) with handle 0xa093d470
10-31 11:23:03.562 22424 22424 I chromium: [INFO:CONSOLE(75)] "getting parent from: content://com.android.externalstorage.documents/document/primary%3ADCIM%2FMA128%2Fparam_MA128_SX20_WWS24_S%C3%9CSSTD_FBK_RadgemRF_FBHgemTele.txt", source: file:///android_asset/www/js/import/import.js (75)
10-31 11:23:03.566 22424 22424 I chromium: [INFO:CONSOLE(77)] "creating backup file: {"isFile":false,"isDirectory":true,"name":"MA128","fullPath":"/com.android.externalstorage.documents/document/primary:DCIM/MA128/","filesystem":"<FileSystem: content>","nativeURL":"content://com.android.externalstorage.documents/document/primary%3ADCIM/MA128/"}", source: file:///android_asset/www/js/import/import.js (77)
10-31 11:23:03.571  8179  8509 E DatabaseUtils: Writing exception to parcel
10-31 11:23:03.571  8179  8509 E DatabaseUtils: java.lang.SecurityException: Permission Denial: reading com.android.externalstorage.ExternalStorageProvider uri content://com.android.externalstorage.documents/document/primary%3ADCIM/MA128/ from pid=22424, uid=10094 requires android.permission.MANAGE_DOCUMENTS, or grantUriPermission()
10-31 11:23:03.571  8179  8509 E DatabaseUtils:         at android.content.ContentProvider.enforceReadPermissionInner(ContentProvider.java:605)
10-31 11:23:03.571  8179  8509 E DatabaseUtils:         at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:480)
10-31 11:23:03.571  8179  8509 E DatabaseUtils:         at android.content.ContentProvider$Transport.query(ContentProvider.java:211)
10-31 11:23:03.571  8179  8509 E DatabaseUtils:         at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112)
10-31 11:23:03.571  8179  8509 E DatabaseUtils:         at android.os.Binder.execTransact(Binder.java:453)
10-31 11:23:03.574 22424 22424 I chromium: [INFO:CONSOLE(60)] "err {"code":2}", source: file:///android_asset/www/js/main/main.js (60)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org