webview 中的本地页面未显示

local page in webview not showing

使用 webView.loadUrl 适用于 https 站点,但不适用于位于 /Applications/MAMP/htdocs/test.html[= 的本地页面14=]

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 class :

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 中提到的网页。注意:我已在清单文件中授予互联网权限。

所以如果文件在设备本地(android phone),你需要有文件的路径。如果文件捆绑在资产中,您可以像这样打开文件:

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

或者找不到的话,可以把文件放到raw resources里,把文件读成字符串再用:

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

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

这里是关于如何访问资源的文档: https://developer.android.com/guide/topics/resources/providing-resources

如果您所说的本地是在您的计算机上,并且您正在托管文件(我假设这只是为了测试),那么您需要将 android 设备/模拟器连接到相同的本地网络作为您的计算机,然后通过您计算机的本地ip访问。

这里还有一个类似的问题,已经有人回答了: Load HTML file into WebView