webview中的本地页面未显示

时间:2018-08-13 10:05:30

标签: android android-webview

使用webView.loadUrl适用于https站点,但不适用于 /Applications/MAMP/htdocs/test.html

中的本地页面
webView.loadUrl("/Applications/MAMP/htdocs/test.html") is not working
webView.loadUrl("http://localhost:8080/test.html"); is not working

下面是test.html文件

<!DOCTYPE html>
<html>
<head>
<title>Sample Page</title>
</head>
<body>

<h2>JS alert Example</h2>

<button onclick="myFunction()" >Try it</button>

<script>
function myFunction (){
    Android.showToast("Sample Android toast message");
}
</script>

</body>
</html>

现在,我想使用webView加载此页面。

下面是mainactivity.java代码

    public class MainActivity extends AppCompatActivity {
    private WebView webView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        getSupportActionBar().hide();
        webView = (WebView) findViewById(R.id.webview);
        webView.loadUrl("http://127.0.0.1:8080/test.html");

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        webView.addJavascriptInterface(new WebAppInterface (this), "Android");



    }
}

下面是我的WebInterface Java类:

public class WebAppInterface {

    private Context context;

    public WebAppInterface (Context context){
        this.context = context;
    }

    @JavascriptInterface
    public void showToast (String message){
        Toast.makeText(context,message,Toast.LENGTH_LONG).show();
    }
}

现在,我不明白为什么它不加载webView.loadUrl中提到的网页。注意:我在清单文件中赋予了Internet权限。

1 个答案:

答案 0 :(得分:0)

因此,如果文件在设备(Android手机)中是本地文件,则需要具有文件的路径。如果文件捆绑在资产中,则可以按以下方式打开文件:

webView.loadUrl("file:///android_asset/filename.html");

或者,如果找不到它,可以将文件放在原始资源中,然后将文件读取为字符串,然后使用:

webView.loadData(htmlString, "text/html", "utf-8");

无论如何,很可能您遇到的问题是找不到该文件。因此,请确保将文件放置在资产或资源中的正确位置。而且您正在正确访问文件。

以下是有关如何访问资源的文档: https://developer.android.com/guide/topics/resources/providing-resources

如果本地计算机是指您的计算机,并且正在托管文件(我认为这只是为了测试),那么您需要将android设备/仿真器连接到与计算机相同的本地网络,然后通过计算机的本地IP进行访问。

这是另一个已经被回答的类似问题: Load HTML file into WebView