关注分享主机优惠活动
国内外VPS云服务器

Android WebView可以加载本地文件吗?

Android WebView出于安全原因本身不允许访问文件系统,因此不支持直接加载本地文件。 但是,您可以使用以下方法之一将本地文件加载到 WebView 中:

  1. 将文件保存在应用的资产文件夹中,并从 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();
}
  1. 将文件保存到应用的内部存储或外部存储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

未经允许不得转载:主机频道 » Android WebView可以加载本地文件吗?

评论 抢沙发

评论前必须登录!