使用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权限。
答案 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