参考这篇 解决了 打开 https链接 Android:这是一份全面 & 详细的Webview使用攻略
package com.mycompany.myapp2;
import android.content.Context;
import android.app.*;
import android.os.*;
import android.util.*;
import android.webkit.*;
import android.widget.*;
import android.view.*;
import java.io.IOException;
import android.net.http.*;
public class MainActivity extends Activity
{
WebView wView;
private long exitTime = 0;
private Button btnread;
private Context mContext;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);//隐藏标题栏 在setContentView()前执行
setContentView(R.layout.main);
wView=(WebView)findViewById(R.id.mainWebView1);
wView.loadUrl("file:///mnt/sdcard/bookmark.html");
wView.getSettings().setJavaScriptEnabled(true);
wView.addJavascriptInterface(new Handler(), "handler");
wView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url){
//view.loadUrl("javascript:window.handler.show(document.body.innerHTML);");
//view.loadUrl("javascript:window.handler.show(document.getElementsByTagName('html')[0].innerHTML);");
view.loadUrl("javascript:var o = document.body; var input = document.createElement('textarea'); input.value =(document.getElementsByTagName('html')[0].innerHTML); input.wrap='virtual';input.rows='10';input.cols='60';o.appendChild(input); var o=(document.getElementsByTagName('html')[0].innerHTML);");
super.onPageFinished(view, url);
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); //表示等待证书响应
// handler.cancel(); //表示挂起连接,为默认方式
// handler.handleMessage(null); //可做其他处理
}
});//setWebviewclient
// 特别注意:5.1以上默认禁止了https和http混用,以下方式是开启
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
wView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
btnread = (Button) findViewById(R.id.mainButton1);
btnread.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String detail = "";
SDFileHelper sdHelper2 = new SDFileHelper(mContext);
try
{
String filename2 = "Test2.txt";
detail = sdHelper2.readFromSD(filename2);
}
catch(IOException e){e.printStackTrace();}
wView.loadUrl(detail);
Toast.makeText(getApplicationContext(), detail, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
}
});
}//end of create
class Handler {
@JavascriptInterface
public void show(String data) {
Toast.makeText(MainActivity.this, "执行了handler.show����", 0).show();
new AlertDialog.Builder(MainActivity.this).setMessage(data).create().show();
}
}
@Override
public void onBackPressed() {
if (wView.canGoBack()) {
wView.goBack();
} else {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
}
}
}
}
开始 没有 import android.net.http.* 报错 cannot override onReceivedSslError,no SslError entity.