배경
에 액세스 할 때 FileUriExposedException 처리 :안드로이드 7.0 마이그레이션 - 안드로이드 내 웹보기에서 다음 URL을로드 할 때 내 응용 프로그램이 <code>FileUriExposedException</code>와 충돌 알게되었다 7.0으로 마이그레이션 한 후 android_asset 폴더
webView.loadUrl("file:///android_asset/myFolder/myFile.html")
내가 읽은 here은 Android 7.0에서 도입 된 파일 시스템 권한 변경으로 인해 발생합니다. 여기서 FileUriExposedException
은 인 텐트의 file : // Uri를 공유하려고 할 때 throw됩니다.
FileProvider
를 사용하는이었다 주위에 제안 된 작업을 구현하기 위해 노력했지만 난 단지 사용 가능한 경로를 볼로 나는
android_asset
폴더에 대해이 작업을 할 수있는 방법을 모른다
FileProvider
의 경우 내부 및 외부 저장 경로가 필요합니다. HelpActivity에서>
Intent intent = new Intent(view.getContext(), HelpActivity.class);
startActivity(intent);
- - MainActivity에서
코드
>
webView.loadUrl("file:///android_asset/help/index.html");
질문
사람을 필요로 할 때이 예외 주위에 얻을 수있는 좋은 방법을 알고 있나요 WebView의 assets 폴더에서 파일을로드 하시겠습니까?
android.os.FileUriExposedException: file:///android_asset/help/help.html exposed beyond app through Intent.getData()
at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958)
at android.net.Uri.checkFileUriExposed(Uri.java:2348)
at android.content.Intent.prepareToLeaveProcess(Intent.java:9766)
at android.content.Intent.prepareToLeaveProcess(Intent.java:9720)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1609)
at android.app.Activity.startActivityForResult(Activity.java:4472)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79)
at android.app.Activity.startActivityForResult(Activity.java:4430)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)
at android.app.Activity.startActivity(Activity.java:4791)
at android.app.Activity.startActivity(Activity.java:4759)
at android.content.ContextWrapper.startActivity(ContextWrapper.java:366)
at org.chromium.android_webview.ResourcesContextWrapperFactory$WebViewContextWrapper.startActivity(ResourcesContextWrapperFactory.java:118)
at org.chromium.android_webview.AwContentsClient.sendBrowsingIntent(AwContentsClient.java:203)
at org.chromium.android_webview.AwContentsClient.shouldIgnoreNavigation(AwContentsClient.java:170)
at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:352)
at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
"Android 7.0으로 마이그레이션 한 후 내 webView에 다음 URL을로드 할 때 내 앱이 FileUriExposedException을 사용하여 충돌하는 것으로 나타났습니다."- 심각하게 말하면? 전체 Java 스택 추적을 게시 할 수 있습니까? – CommonsWare
@CommonsWare 죄송합니다. 죄송합니다. 추가했습니다. – Lauren
stacktrace는 startActivity()가 사용하는 인 텐트에서 uri 파일을 전달하려고하는 것처럼 보입니다. – greenapps