API 24以上をターゲットにする場合、HTMLリンクを使用してWebView
のローカルファイル(HTMLページ)にナビゲートするにはどうすればよいですか?ターゲットAPIを使用したWebViewのローカルファイルへのHTMLリンク24
これは以前に議論されており、解決方法はfile://
URIスキームを使用します。これまで働いていた何 はWebView
に表示され、リンクをクリックすると、ローカルのページapp/src/main/assets/my_page.html
をロードするHTMLファイルに
<a href="file:///android_asset/my_page.html">Go to local page</a>
を使用していました。
ただし、このようなリンクをクリックすると、API24からFileUriExposedExceptionが発生します。 logcatから:「アプリケーションが別のアプリケーションにfile://
ウリを公開しています。」とき
mypackage.myapp W/System.err: android.os.FileUriExposedException: file:///android_asset/my_page.html exposed beyond app through Intent.getData()
...
mypackage.myapp W/System.err: at org.chromium.android_webview.ResourcesContextWrapperFactory$WebViewContextWrapper.startActivity(ResourcesContextWrapperFactory.java:121)
mypackage.myapp W/System.err: at org.chromium.android_webview.AwContentsClient.sendBrowsingIntent(AwContentsClient.java:203)
文書によると、これがスローされます。ログによれば、すべてがmypackage.myapp
の中で起こっているようだから、なぜこれが当てはまるのだろうか。
代わりにcontent://
URIスキームを使用することがドキュメントに示されていますが、これはHTMLファイルでは機能しません。