javascript - asset文件夹中的文件可以在webview中运行,sd卡中的文件可以在外部浏览器中运行,我想在webview和外部浏览器中运行文件

标签 javascript java android html css

myWeb = (WebView) findViewById(R.id.webView1);
myWeb.getSettings().setJavaScriptEnabled(true);
myWeb.getSettings().setDomStorageEnabled(true);
myWeb.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress) {
    activity.setProgress(progress * 1000);
        }
    });

myWeb.loadUrl("/mnt/extSdCard/THEWEB/hi.html");

//file:///android_asset/this.html could run in webview but not in externalbrowser ///mnt/extSdCard/THEWEB/hi.html could run in external but not in web view

File file=new File("/mnt/extSdCard/THEWEB/hi.html");
Intent i = new Intent(Intent.ACTION_VIEW, Uri.fromFile(file));
i.addCategory(Intent.CATEGORY_BROWSABLE);
i.setDataAndType(Uri.fromFile(file), "application/x-webarchive-xml");
            startActivity(i);

最佳答案

第一个选项 (/file:///android_asset/this.html) 它在本地浏览器中工作,因为该文件位于包文件夹内。这是私有(private)的,其他应用程序(包括外部浏览器)不能从外部访问它。

你写的第二个是将文件放在共享文件夹中,这可以从内部 webview 和外部 webview 访问。特别是您的代码的问题是路径:

"/mnt/extSdCard/THEWEB/hi.html"

它需要是这样的:

"file:///mnt/extSdCard/THEWEB/hi.html"

或者你可以使用更好的方法:

"file://"+Environment.getExternalStorageDirectory()+"/THEWEB/hi.html"

并且您的应用应该在 list 中添加访问外部存储的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

关于javascript - asset文件夹中的文件可以在webview中运行,sd卡中的文件可以在外部浏览器中运行,我想在webview和外部浏览器中运行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41744758/

相关文章:

java - 如何在 Libgdx 中支持 OpenGL ES GL10、GL11 和 GL20?

java - 解析Google搜索结果错误

android - 通过更改 build.xml 和 ant.properties 生成 Android 代码覆盖率

javascript - 在 typescript 中遍历可变元组

Javascript - 通过添加先前的值来更新数组值

javascript - AJAX 请求从包含对象的数组中提取信息

java - Spring Gateway AsyncPredicate 不适用于 react 堆和通量

javascript - ionic 框架 3 : Splitting a long article page into small pages

android - Google PlaceAutocompleteFragment 因错误而崩溃

java.net.BindException : EADDRINUSE (Address already in use)