Lollipop
에 이상한 충돌이 있습니다. 서버에서 파일을 다운로드하려고 할 때 보안 예외가 발생하지만 Marshmallow
이상을 실행하는 장치에서는 응용 프로그램이 충돌하지 않습니다. 로그 캣는 : DESTINATION_FILE_URI를 사용하는 필요의 WRITE_EXTERNAL_STORAGE 권한 :이 java.lang.SecurityException :에 의한targetSdkVersion 이하의 다운로드 관리자에 대한 보안 예외 22
나는 최신 SDK 버전을 대상으로 구글 콘솔 우리의 첫번째 푸시 후 변경 예정UID 10229은 android.permission.WRITE_EXTERNAL_STORAGE이 없습니다. 앱의
grandle
에서
targetSdkVersion 22
를 사용하지만, 지금이, 22 런타임 권한에 대한 그래서 필요 남아 있지 않습니다 . 또한 App의 Manifest에 앱의 권한을 선언합니다. 또한
<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" />
의 DownloadManager
AsynckTask
내부 사용하는 코드 : 삼성 갤럭시 S6를 실행하는 에뮬레이터에서, 다시
try {
String dirPath = String.format("%5$s/%1$s/Resources/%2$s/%3$s/%4$s/", userID, resource.getiD(), filePackage.getiD(), language, dir.getCanonicalPath());
File makeDirs = new File(dirPath);
makeDirs.mkdirs();
} catch (Exception ex) {
ex.printStackTrace();
}
this.downloadManager = (DownloadManager) getApplicationContext().getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(url);
request.setDestinationInExternalFilesDir(getApplicationContext(), null, filePath);
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
request.setVisibleInDownloadsUi(false);
downloadID = downloadManager.enqueue(request);
이 충돌 OS 버전 5.0.2 갤럭시 A5에서만 관찰된다 Lollipop
및 에뮬레이터 실행 중 Kitkat
4.4.4 HTC One.
전체 stack trace
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)
, 공유하시기 바랍니다, 감사합니다.
'filePath'. 부탁해. – greenapps
'android.os.Parcel.readException (Parcel.java:1540)'. READ_EXTERNAL_STORAGE에 대한 요청을 추가 할 수 있습니다. – greenapps
'DownloadManagerinside와 AsynckTask를 사용하는 코드 :'. 비동기 작업에 코드를 삽입하면 안됩니다. – greenapps