Ich benutze die DownloadManager
um Bilder von unserem Server herunterzuladen und ich lege die Dateien in die externalFilesDir
.java.lang.SecurityException: Permission Denial: nicht erlaubt Sendung Broadcast android.intent.action.MEDIA_MOUNTED on KitKat nur
Ich sende eine Broadcastabsicht, weil ich nicht möchte, dass diese heruntergeladenen Bilder in der Galerie erscheinen.
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + context.getExternalFilesDir(null))));
Getestet habe ich nur auf meinem Galaxy S3 Jelly Bean 4.3 vor und es funktioniert, aber wenn ich es auf KitKat 4.4
getestet stürzt die App.
Gibt es eine bessere Möglichkeit, die vom DownloadManager heruntergeladenen Dateien nicht in der Telefongalerie anzuzeigen?
Stack Trace
06-05 17:34:41.940: E/AndroidRuntime(15410): FATAL EXCEPTION: main
06-05 17:34:41.940: E/AndroidRuntime(15410): Process: com.walintukai.lfdate, PID: 15410
06-05 17:34:41.940: E/AndroidRuntime(15410): java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.DOWNLOAD_COMPLETE flg=0x10 pkg=com.walintukai.lfdate (has extras) } in [email protected]
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:778)
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.os.Handler.handleCallback(Handler.java:733)
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.os.Handler.dispatchMessage(Handler.java:95)
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.os.Looper.loop(Looper.java:136)
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.app.ActivityThread.main(ActivityThread.java:5057)
06-05 17:34:41.940: E/AndroidRuntime(15410): at java.lang.reflect.Method.invokeNative(Native Method)
06-05 17:34:41.940: E/AndroidRuntime(15410): at java.lang.reflect.Method.invoke(Method.java:515)
06-05 17:34:41.940: E/AndroidRuntime(15410): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
06-05 17:34:41.940: E/AndroidRuntime(15410): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
06-05 17:34:41.940: E/AndroidRuntime(15410): at dalvik.system.NativeStart.main(Native Method)
06-05 17:34:41.940: E/AndroidRuntime(15410): Caused by: java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.MEDIA_MOUNTED from pid=15410, uid=10135
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.os.Parcel.readException(Parcel.java:1465)
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.os.Parcel.readException(Parcel.java:1419)
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:2390)
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1127)
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:365)
06-05 17:34:41.940: E/AndroidRuntime(15410): at com.walintukai.lfdate.SocketIOService$1.onReceive(SocketIOService.java:111)
06-05 17:34:41.940: E/AndroidRuntime(15410): at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768)
06-05 17:34:41.940: E/AndroidRuntime(15410): ... 9 more
Ihre Frage ist nicht eindeutig: wollen Sie ** ** und die Dateien aus in der Galerie erscheinen, oder tun willst du sicherstellen, dass sie dort erscheinen? Um zu verhindern, dass Dateien in einem bestimmten Verzeichnis in der Galerie (oder anderen Medienbibliotheken) angezeigt werden, legen Sie eine Datei mit dem Namen '.nomedia' im selben Verzeichnis ab. Führen Sie einen Medienscan aus, wie in den Antworten unten beschrieben, damit Dateien sofort angezeigt werden. – user149408