java.lang.SecurityException异常:目标必须是外部存储 [英] java.lang.SecurityException: Destination must be on external storage

查看:238
本文介绍了java.lang.SecurityException异常:目标必须是外部存储的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Android的电视,U盘挂载到/ mnt / USB / sdb4,采用Android DownloadManage,

 文件pathyr =新的文件(到/ mnt / USB / sdb4);
            乌里downloadUri = Uri.parse(DOWNLOAD_FILE);
            DownloadManager.Request要求=新DownloadManager.Request(downloadUri);
            request.setDestinationUri(Uri.fromFile(新文件(pathyr100mb.jpg)));


  10月4日至20日:54:05.593:W / dalvikvm(2315):主题ID = 1:螺纹未捕获的异常(组= 0x40f771f8)退出
十月4日至20日:54:05.665:E / AndroidRuntime(2315):致命异常:主要
十月4日至20日:54:05.665:E / AndroidRuntime(2315):java.lang.SecurityException异常:目标必须是外部存储:文件:///mnt/usb/sdb4/100mb.test.test
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.os.Parcel.readException(Parcel.java:1327)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:181)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.content.ContentProviderProxy.insert(ContentProviderNative.java:415)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.content.ContentResolver.insert(ContentResolver.java:730)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在com.exercise.download.DownloadManager.enqueue(DownloadManager.java:750)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在com.exercise.AndroidDownloadManager.AndroidDownloadManagerActivity$1.onClick(AndroidDownloadManagerActivity.java:71)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.View.performClick(View.java:3511)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.View.onKeyUp(View.java:6073)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.widget.TextView.onKeyUp(TextView.java:5595)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.KeyEvent.dispatch(KeyEvent.java:3010)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.View.dispatchKeyEvent(View.java:5500)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在com.android.internal.policy.impl.PhoneWindow $ DecorView.superDispatchKeyEvent(PhoneWindow.java:1879)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1361)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.app.Activity.dispatchKeyEvent(Activity.java:2325)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在com.android.internal.policy.impl.PhoneWindow $ DecorView.dispatchKeyEvent(PhoneWindow.java:1806)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3327)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:330​​0)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2460)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.os.Handler.dispatchMessage(Handler.java:99)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.os.Looper.loop(Looper.java:137)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在android.app.ActivityThread.main(ActivityThread.java:4424)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在java.lang.reflect.Method.invokeNative(本机方法)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在java.lang.reflect.Method.invoke(Method.java:511)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:853)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:579)
十月4日至20日:54:05.665:E / AndroidRuntime(2315):在dalvik.system.NativeStart.main(本机方法)


解决方案

目前,一个下载管理器要求只接受对标准的外部存储路径,检索通过 Environment.getExternalStoragePublicDirectory(yourDirOfChoice) Environment.getExternalStorageDirectory();否则,它抛出这个异常。

有关更多信息,请参阅this StackOverflow的问题。

in android TV, U disk mount /mnt/usb/sdb4, use android DownloadManage,

 File pathyr = new File("/mnt/usb/sdb4");
            Uri downloadUri = Uri.parse(DOWNLOAD_FILE);
            DownloadManager.Request request = new DownloadManager.Request(downloadUri);
            request.setDestinationUri(Uri.fromFile(new File( pathyr,"100mb.jpg") ));


04-20 10:54:05.593: W/dalvikvm(2315): threadid=1: thread exiting with uncaught exception (group=0x40f771f8)
04-20 10:54:05.665: E/AndroidRuntime(2315): FATAL EXCEPTION: main
04-20 10:54:05.665: E/AndroidRuntime(2315): java.lang.SecurityException: Destination must be on external storage: file:///mnt/usb/sdb4/100mb.test.test
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.os.Parcel.readException(Parcel.java:1327)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:181)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:135)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.content.ContentProviderProxy.insert(ContentProviderNative.java:415)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.content.ContentResolver.insert(ContentResolver.java:730)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at com.exercise.download.DownloadManager.enqueue(DownloadManager.java:750)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at com.exercise.AndroidDownloadManager.AndroidDownloadManagerActivity$1.onClick(AndroidDownloadManagerActivity.java:71)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.View.performClick(View.java:3511)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.View.onKeyUp(View.java:6073)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.widget.TextView.onKeyUp(TextView.java:5595)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.KeyEvent.dispatch(KeyEvent.java:3010)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.View.dispatchKeyEvent(View.java:5500)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1246)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1879)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1361)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.app.Activity.dispatchKeyEvent(Activity.java:2325)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1806)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.ViewRootImpl.deliverKeyEventPostIme(ViewRootImpl.java:3327)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.ViewRootImpl.handleFinishedEvent(ViewRootImpl.java:3300)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2460)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.os.Looper.loop(Looper.java:137)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at android.app.ActivityThread.main(ActivityThread.java:4424)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at java.lang.reflect.Method.invokeNative(Native Method)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at java.lang.reflect.Method.invoke(Method.java:511)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:853)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:579)
04-20 10:54:05.665: E/AndroidRuntime(2315):     at dalvik.system.NativeStart.main(Native Method)

解决方案

At the moment, a DownloadManager request accepts only paths on the "standard" external storage, as retrieved by Environment.getExternalStoragePublicDirectory(yourDirOfChoice) or Environment.getExternalStorageDirectory(); otherwise, it throws this exception.

For more info, see this StackOverflow question.

这篇关于java.lang.SecurityException异常:目标必须是外部存储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆