Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android targetSdkVersion低于22的下载管理器的安全异常_Android_Android Permissions_Android Download Manager - Fatal编程技术网

Android targetSdkVersion低于22的下载管理器的安全异常

Android targetSdkVersion低于22的下载管理器的安全异常,android,android-permissions,android-download-manager,Android,Android Permissions,Android Download Manager,我在棒棒糖及以下网站上遇到了一次奇怪的崩溃。我在尝试从服务器下载文件时遇到安全异常,但在运行Marshmallow及以上版本的设备中,应用程序不会崩溃Logcat: 原因:java.lang.SecurityException:需要写入外部存储权限才能使用目标文件。\u URI:uid 10229没有android.permission.WRITE外部存储 我使用的应用程序中的grandle targetSdkVersion 22 在我们第一次推送Google Console以最新sdk版本

我在
棒棒糖
及以下网站上遇到了一次奇怪的崩溃。我在尝试从服务器下载文件时遇到安全异常,但在运行
Marshmallow
及以上版本的设备中,应用程序不会崩溃Logcat

原因:java.lang.SecurityException:需要写入外部存储权限才能使用目标文件。\u URI:uid 10229没有android.permission.WRITE外部存储

我使用的应用程序中的
grandle

 targetSdkVersion 22
在我们第一次推送Google Console以最新sdk版本为目标后,将发生变化,但目前这将保持为22,因此不需要运行时权限。 此外,在应用程序的清单中,我们声明应用程序的权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
同样,只有在操作系统版本为5.0.2的Galaxy A5中,在运行三星Galaxy S6和棒棒糖的仿真器中,以及在运行Kitkat的仿真器中,才能观察到这种崩溃

完整的
堆栈跟踪

    java.lang.RuntimeException: Unable to start activity ComponentInfo{...players.PDFViewer}: java.lang.SecurityException: need WRITE_EXTERNAL_STORAGE permission to use DESTINATION_FILE_URI: uid 10229 does not have android.permission.WRITE_EXTERNAL_STORAGE.
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2808)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2873)
                                                                             at android.app.ActivityThread.access$900(ActivityThread.java:181)
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1482)
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                             at android.os.Looper.loop(Looper.java:145)
                                                                             at android.app.ActivityThread.main(ActivityThread.java:6145)
                                                                             at java.lang.reflect.Method.invoke(Native Method)
                                                                             at java.lang.reflect.Method.invoke(Method.java:372)
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
                                                                          Caused by: java.lang.SecurityException: need WRITE_EXTERNAL_STORAGE permission to use DESTINATION_FILE_URI: uid 10229 does not have android.permission.WRITE_EXTERNAL_STORAGE.
                                                                             at android.os.Parcel.readException(Parcel.java:1540)
                                                                             at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:185)
                                                                             at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:137)
                                                                             at android.content.ContentProviderProxy.insert(ContentProviderNative.java:475)
                                                                             at android.content.ContentResolver.insert(ContentResolver.java:1260)
                                                                             at android.app.DownloadManager.enqueue(DownloadManager.java:1336)
                                                                             at de.imsystems.crmmobile.players.PDFViewer.onCreate(PDFViewer.java:104)
                                                                             at android.app.Activity.performCreate(Activity.java:6374)
                                                                             at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                                             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2752)
                                                                             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2873) 
                                                                             at android.app.ActivityThread.access$900(ActivityThread.java:181) 
                                                                             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1482) 
                                                                             at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                             at android.os.Looper.loop(Looper.java:145) 
                                                                             at android.app.ActivityThread.main(ActivityThread.java:6145) 
                                                                             at java.lang.reflect.Method.invoke(Native Method) 
                                                                             at java.lang.reflect.Method.invoke(Method.java:372) 
                                                                             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
                                                                             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
如果你有任何想法,请分享,提前谢谢

这篇文章最终帮助了我。我所做的是更改
AndroidManifest.xml
文件中的权限,如下所示:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="26" tools:replace="android:maxSdkVersion"/>


这样应用程序就不会崩溃

文件路径
。请输入值。
位于android.os.Parcel.readException(Parcel.java:1540)
。您可以添加读取外部存储的请求。
使用DownloadManagerinside异步任务的代码:
。您不应该将该代码放在异步任务中。@greenapps文件路径:“44490/Resources/5247/6337/en GB/Training.pdf”,为什么不将代码放在
AsyncTask
?@greenapps dir=“/storage/emulated/0/Android/data/development.standard/files”
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="26" tools:replace="android:maxSdkVersion"/>