Accéder à un fichier à partir du gestionnaire de fichiers dans Android 4.4 affiche une exception
-
26-12-2019 - |
Question
Je développe une application Android, dans cette application, j'accède à un fichier par défaut d'Android file manger
.Si j'exécute cette application dans des versions inférieures (sauf Android 4.4), je peux accéder au fichier dans mon application, mais si j'exécute mon application avec android 4.4
kitkat OS Je n'ai pas pu accéder à un fichier à partir du gestionnaire de fichiers, il en a montré Exceptions
.ici, j'ai joint ma sortie LogCat.
LogCat
06-03 15:59:34.127 W/System.err(14882): java.io.FileNotFoundException: /system/etc/vold.fstab: open failed: ENOENT (No such file or directory)
06-03 15:59:34.127 W/System.err(14882): at libcore.io.IoBridge.open(IoBridge.java:409)
06-03 15:59:34.127 W/System.err(14882): at java.io.FileInputStream.<init>(FileInputStream.java:78)
06-03 15:59:34.127 W/System.err(14882): at java.util.Scanner.<init>(Scanner.java:158)
06-03 15:59:34.127 W/System.err(14882): at java.util.Scanner.<init>(Scanner.java:138)
06-03 15:59:34.127 W/System.err(14882): at com.ipaulpro.afilechooser.StorageOptions.readVoldFile(StorageOptions.java:81)
06-03 15:59:34.127 W/System.err(14882): at com.ipaulpro.afilechooser.StorageOptions.determineStorageOptions(StorageOptions.java:21)
06-03 15:59:34.127 W/System.err(14882): at com.ipaulpro.afilechooser.FileChooserActivity.onCreate(FileChooserActivity.java:348)
06-03 15:59:34.127 W/System.err(14882): at com.wepanow.MyFileChooserActivity.onCreate(MyFileChooserActivity.java:24)
06-03 15:59:34.127 W/System.err(14882): at android.app.Activity.performCreate(Activity.java:5231)
06-03 15:59:34.127 W/System.err(14882): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
06-03 15:59:34.127 W/System.err(14882): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
06-03 15:59:34.127 W/System.err(14882): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
06-03 15:59:34.127 W/System.err(14882): at android.app.ActivityThread.access$800(ActivityThread.java:135)
06-03 15:59:34.127 W/System.err(14882): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
06-03 15:59:34.127 W/System.err(14882): at android.os.Handler.dispatchMessage(Handler.java:102)
06-03 15:59:34.127 W/System.err(14882): at android.os.Looper.loop(Looper.java:136)
06-03 15:59:34.127 W/System.err(14882): at android.app.ActivityThread.main(ActivityThread.java:5017)
06-03 15:59:34.127 W/System.err(14882): at java.lang.reflect.Method.invokeNative(Native Method)
06-03 15:59:34.127 W/System.err(14882): at java.lang.reflect.Method.invoke(Method.java:515)
06-03 15:59:34.127 W/System.err(14882): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
06-03 15:59:34.127 W/System.err(14882): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
06-03 15:59:34.127 W/System.err(14882): at dalvik.system.NativeStart.main(Native Method)
06-03 15:59:34.127 W/System.err(14882): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
06-03 15:59:34.127 W/System.err(14882): at libcore.io.Posix.open(Native Method)
06-03 15:59:34.127 W/System.err(14882): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
06-03 15:59:34.127 W/System.err(14882): at libcore.io.IoBridge.open(IoBridge.java:393)
06-03 15:59:34.127 W/System.err(14882): ... 21 more
06-03 15:59:39.012 E/wepa (14882): File select error
06-03 15:59:39.012 E/wepa (14882): java.lang.NullPointerException
06-03 15:59:39.012 E/wepa (14882): at java.io.File.fixSlashes(File.java:185)
06-03 15:59:39.012 E/wepa (14882): at java.io.File.<init>(File.java:134)
06-03 15:59:39.012 E/wepa (14882): at com.ipaulpro.afilechooser.FileChooserActivity.onActivityResult(FileChooserActivity.java:453)
06-03 15:59:39.012 E/wepa (14882): at android.app.Activity.dispatchActivityResult(Activity.java:5423)
06-03 15:59:39.012 E/wepa (14882): at android.app.ActivityThread.deliverResults(ActivityThread.java:3361)
06-03 15:59:39.012 E/wepa (14882): at android.app.ActivityThread.handleSendResult(ActivityThread.java:3408)
06-03 15:59:39.012 E/wepa (14882): at android.app.ActivityThread.access$1300(ActivityThread.java:135)
06-03 15:59:39.012 E/wepa (14882): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1244)
06-03 15:59:39.012 E/wepa (14882): at android.os.Handler.dispatchMessage(Handler.java:102)
06-03 15:59:39.012 E/wepa (14882): at android.os.Looper.loop(Looper.java:136)
06-03 15:59:39.012 E/wepa (14882): at android.app.ActivityThread.main(ActivityThread.java:5017)
06-03 15:59:39.012 E/wepa (14882): at java.lang.reflect.Method.invokeNative(Native Method)
06-03 15:59:39.012 E/wepa (14882): at java.lang.reflect.Method.invoke(Method.java:515)
06-03 15:59:39.012 E/wepa (14882): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
06-03 15:59:39.012 E/wepa (14882): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
06-03 15:59:39.012 E/wepa (14882): at dalvik.system.NativeStart.main(Native Method)
06-03 15:59:39.012 D/ChooserActivity(14882): Intent Action: null
06-03 15:59:39.012 I/wepa (14882): FileChooser > onResume
06-03 15:59:39.012 I/wepa (14882): FC (onResume)has Extra:false
06-03 15:59:39.012 I/wepa (14882): FC (onResume)has Extra:false
06-03 15:59:39.022 V/PhoneStatusBar(660): setLightsOn(true)
06-03 15:59:43.826 D/wepa (14882): File selections canceled
La solution
J'accède à un fichier depuis le gestionnaire de fichiers par défaut d'Android
Android n'a pas de gestionnaire de fichiers.
si j'exécutais mon application avec le système d'exploitation Android 4.4 kitkat, je ne pouvais pas accéder à un fichier à partir du gestionnaire de fichiers, il affichait quelques exceptions
Vous n'avez pas d'accès en lecture à /system/etc/vold.fstab
sur cet appareil, apparemment.Il n'est pas nécessaire que ce fichier soit lisible sur tous les appareils par les applications SDK ordinaires, et Android 4.4.x a progressivement renforcé la sécurité d'accès au système de fichiers.