Android - 有没有办法在没有webView的情况下实现相同的结果?

时间:2015-08-04 23:02:25

标签: android

我试图获得" html-out"加载后的网页。 以下是我现在使用的代码:

public class TestActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);
    final WebView webview = (WebView) findViewById(R.id.browser);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.addJavascriptInterface(new MyJavaScriptInterface(this), "HtmlViewer");

    webview.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            webview.loadUrl("javascript:window.HtmlViewer.showHTML" +
                    "('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');");
        }
    });

    webview.loadUrl("http://android-in-action.com/index.php?post/" +
            "Common-errors-and-bugs-and-how-to-solve-avoid-them");
}

class MyJavaScriptInterface {

    private Context ctx;

    MyJavaScriptInterface(Context ctx) {
        this.ctx = ctx;
    }

    public void showHTML(String html) {
        new AlertDialog.Builder(ctx).setTitle("HTML").setMessage(html)
                .setPositiveButton(android.R.string.ok, null).setCancelable(false).create().show();
    }

}

有没有办法在不使用WebView的情况下实现相同的目标?如果可能的话,我根本不想使用任何观点。

1 个答案:

答案 0 :(得分:0)

  

有没有办法在不使用WebView的情况下实现相同的目标?

使用HTTP API执行HTTP GET请求。例如,HttpUrlConnection已经存在了大约15年左右。或者,如果您更喜欢更现代的东西,请使用the OkHttp library

private final OkHttpClient client = new OkHttpClient();

String urlString = "http://android-in-action.com/index.php?post/Common-errors-and-bugs-and-how-to-solve-avoid-them";
Request request = new Request.Builder().url(urlString).build();

Response response = client.newCall(request).execute();
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);

String html = response.body().string();

该代码基于an OkHttp published recipe,应在后台线程上调用,或使用其异步API选项。