我的应用程序通过
在
WebView#loadUrl()
加载位于getFilesDir()
下的本地 HTML 文件。在
targetSdkVersion = 29
之前,以下代码可以工作。 copyAssetsFile(this, "sample.html", getFilesDir().getAbsolutePath());
webView.getSettings().setJavaScriptEnabled(true);
String url = "file://" + getFilesDir().getAbsolutePath() + "/sample.html";
webView.loadUrl(url);
}
private static void copyAssetsFile(Context context, String fileName, String directoryPath) {
try {
InputStream inputStream = context.getResources().getAssets().open(fileName);
FileOutputStream fileOutputStream = new FileOutputStream(
new File(directoryPath, fileName), false);
byte[] buffer = new byte[1024];
int length = 0;
while ((length = inputStream.read(buffer)) >= 0) {
fileOutputStream.write(buffer, 0, length);
}
fileOutputStream.close();
inputStream.close();
完整示例位于此处。
然而,当更改targetSdkVersion = 30
后,它无法正常工作。
- WebView 响应
net::ERR_ACCESS_DINIED
- 如果本地 HTML 文件位于
android_asset
中,则可以加载该文件
如何在 targetSdkVersion = 30
上加载本地 HTML 文件?
是否被 Android FW 拒绝了?