gpt4 book ai didi

android - 将本地 Assets 加载到浏览器中(而不是加载到 WebView 中)

转载 作者:行者123 更新时间:2023-11-29 01:55:47 25 4
gpt4 key购买 nike

我的问题是我需要将项目中的 HTML 文件加载到浏览器中。

对于应用程序的细节,我不能:

  • 复制SD卡中的 Assets ,因为需要读取文件时可以卸载。
  • 在应用程序中使用 WebView。它需要是浏览器。

到目前为止,我的方法一直是尝试使用 ContentProvider。我一直在关注这个tutorial .在这种方法中,我的主要问题是如何将 Uri 传递给浏览器并调用我的 ContentProvider

我试过像这样向浏览器发送 Intent:

Uri uri = Uri.parse( "content://myprovider_authority/my_file.html" ):
intent.setData(uri);
startActivity(intent);

但普通的 Android 浏览器不理解 URI 并尝试在 Google 中搜索 URI。

有谁知道我应该如何将此 Uri 传递给浏览器以便在我的 ContentProvider 中收到请求?


解决方案说明:

@gimix 解决方案对我有用,即使该方法没有使用 ContentProvider。我再解释一下。

他提出的是向浏览器发送一个数据URI方案。这意味着将我们的本地 HTML Assets 文件编码为 Base64 并使用 Intent 传递它。浏览器将解释该数据并呈现结果。一些代码将有助于理解它:

String html = "";
try {
InputStream is = mContext.getAssets().open( "my_file.html" );
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
html = new String(buffer);
}
catch (IOException e) {
e.printStackTrace();
}

intent.setData( Uri.parse( "data:text/html;charset=utf-8;base64," + Base64.encodeToString( html.getBytes(), Base64.NO_WRAP )));
startActivity(intent);

这里棘手的事情是 HTML 中的图像。对于那些你有两个选择,对这些图像进行编码并将实际编码放在 HTML 编码中或引用 Web 图像(这样你就不需要进行任何其他编码)。

我的 HTML 非常简单,而且我使用了 Web 图像,所以这对我来说非常有用。

(不确定是否所有浏览器都支持数据方案)

最佳答案

Android 浏览器支持 data URI scheme

按照维基百科的示例,您可以使用以下 URL 来显示带有文本“42”的 HTML 页面:

data:text/html;charset=utf-8,%3C!DOCTYPE%20html%3E%3Chtml%20lang%3D%22en%22%3E%3Chead%3E%3Ctitle%3EEmbedded%20Window%3C%2Ftitle%3E%3C%2Fhead%3E%3Cbody%3E%3Ch1%3E42%3C%2Fh1%3E%3C%2Fbody%3E%3C%2Fhtml%3E

关于android - 将本地 Assets 加载到浏览器中(而不是加载到 WebView 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15245730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com