Android WebView出于安全原因本身不允许访问文件系统,因此不支持直接加载本地文件。 但是,您可以使用以下方法之一将本地文件加载到 WebView 中:
- 将文件保存在应用的资产文件夹中,并从
AssetManager
资产文件夹中加载文件。 例如,假设您的assets
文件夹中有一个名为example.html
的文件,您可以使用以下代码将其加载到 WebView 中:
尝试 {
InputStream inputStream = getAssets().open(" example.html");
字节[]buffer = 新 字节[inputStream.available()];
inputStream.read(buffer);
inputStream.close();
字符串 htmlContent = 新 字符串(缓冲区,StandardCharsets.UTF_8);
webView.loadDataWithBaseURL ( null、htmlContent、"text/html"、" utf -8", null);
} catch (IOException e) {
e.printStackTrace();
}
- 将文件保存到应用的内部存储或外部存储storage 接下来,使用
FileProvider
获取文件的 URI 并将该 URI 加载到 WebView 中。 例如,假设应用的内部存储中有一个名为example.html
的文件,您可以使用以下代码将该文件加载到 WebView 中:
首先,将以下权限添加到 AndroidManifest.xml
文件中。
<使用权限 android:name="android.permission.READ_EXTERNAL_STORAGE"/>
然后使用以下代码加载文件。
文件 文件 = 新 文件(getFilesDir(), "example.html");
Uri uri = FileProvider.getUriForFile(这个, getApplicationContext().getPackageName() + ".provider", file);
webView.loadUrl("文件://" + 请注意,您需要添加
元素 code>AndroidManifest.xml
文件并设置适当的权限和路径。
<提供商
android:name="androidx.core.content .FileProvider"
android:authorities= "${applicationId}.provider"
android:exported="false" [小时]android:grantUriPermissions="true">
<元数据
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource= "@xml/file_paths"/>
</provider>
最后创建一个名为file_paths.xml
将以下内容添加到 res/xml
文件夹中。
<? XML 版本="1.0"编码="utf-8"?>
<路径 xmlns:android="http://schemas.android.com/apk/res/android">
<文件路径 名称="文件" 路径="."/>
</路径>
像这样
以上内容来自网络,不代表任何观点 本站浏览量:zhujipindao.com
评论前必须登录!
注册