java.lang.SecurityException异常:目标必须是外部存储

编程入门 行业动态 更新时间:2024-10-17 11:28:52
本文介绍了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异常:目标必须是外部存储

本文发布于:2023-11-27 04:04:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1636513.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:异常   目标   java   lang   SecurityException

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!