gpt4 book ai didi

android - 无法从 Android 中的 Webview 访问 html 文件中存在的 url

转载 作者:太空宇宙 更新时间:2023-11-03 13:32:10 26 4
gpt4 key购买 nike

我正在尝试使用 shouldOverrideUrlLoading 方法访问 url。出于某种原因,当我尝试访问 html 文件中存在的 url 时,出现网页不可用错误。以前我可以访问 url,因为我将 html 文件存储在原始文件夹中,但我需要将其移动到 Assets 文件夹,因为这样代码看起来更清晰。这是我的代码,谁能告诉我如何解决这个问题。

webview.setWebChromeClient(new WebChromeClient());
webview.setWebViewClient(new WebViewClient());
webview.loadUrl("file:///android_asset/myfile/file.html");
webview.setVerticalScrollBarEnabled(false);
webview.setWebViewClient(new WebViewClient()
{
public boolean shouldOverrideUrlLoading(WebView view, String url) {

if (url.equalsIgnoreCase("some text")){
setDialog("some fancy text");
}

最佳答案


首先尝试获取文件的真实路径,然后按照您的方式尝试:


String YourURI="/android_asset/myfile/file.html";
YourURI = new File(getRealPathFromURI(YourURI));

//Got the Real Path Of the File

private String getRealPathFromURI(Uri contentURI) {
Cursor cursor = getContentResolver().query(contentURI, null, null, null, null);
cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(idx);
}

webview.setWebChromeClient(new WebChromeClient());
webview.setWebViewClient(new WebViewClient());
webview.loadUrl(YourURI); //**Used the Real Path**
webview.setVerticalScrollBarEnabled(false);
webview.setWebViewClient(new WebViewClient()
{
public boolean shouldOverrideUrlLoading(WebView view, String url) {

if (url.equalsIgnoreCase("some text")){
setDialog("some fancy text");
}
}

如果文件在 SDCARD 中:-


webview.setWebChromeClient(new WebChromeClient());
webview.setWebViewClient(new WebViewClient());
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
Log.d(TAG, "No SDCARD");
}
else
{
webview.loadUrl("file://"+Environment.getExternalStorageDirectory()
+"/android_asset/myfile/file.html");
}
webview.setVerticalScrollBarEnabled(false);
webview.setWebViewClient(new WebViewClient()
{
public boolean shouldOverrideUrlLoading(WebView view, String url) {

if (url.equalsIgnoreCase("some text")){
setDialog("some fancy text");
}
}

最终编辑:- 此代码非常适用于 Assets 文件夹


public class MyActivity extends Activity {  
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webview);
WebView webview;
webview = (WebView) findViewById(R.id.webView1);
webview.loadUrl("file:///android_asset/myfile/file.html");
}
}

关于android - 无法从 Android 中的 Webview 访问 html 文件中存在的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11636429/

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