本文介绍了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:3300)十月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异常:目标必须是外部存储
发布评论