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

时间:2017-01-19 14:50:15

标签: 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可以在webview中运行但不能在   externalbrowser ///mnt/extSdCard/THEWEB/hi.html可以运行   外部但不在网络视图中

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);

1 个答案:

答案 0 :(得分:0)

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

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

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

它需要像:

"file:///mnt/extSdCard/THEWEB/hi.html"
你可以使用

甚至更好:

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

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

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