webView

实现点击新闻通过app内置的浏览器进行浏览,而不是跳到第三方的浏览器打开链接。

1.编辑浏览器页面

MyApplication/app/src/main/res/layout/news_web.xml

<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/new_web"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>

2.编写处理web请求的类

MyApplication/app/src/main/java/com/example/myapplication/NewsActivity.java

package com.example.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class NewsActivity extends AppCompatActivity {

    private WebView webView;
    private long exitTime = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        //获得转跳的url
        String content_url = intent.getStringExtra("content_url");
        setContentView(R.layout.news_web);
        webView = findViewById(R.id.new_web);
        webView.setWebViewClient(new WebViewClient() {
            //设置在webView点击打开的新网页在当前界面显示,而不跳转到新的浏览器中
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                return super.shouldOverrideUrlLoading(view, request);
            }
        });
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(content_url);
    }

    /**
     * 返回的方法
     */
    @Override
    public void onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            if ((System.currentTimeMillis() - exitTime) > 2000) {
                //单击返回
                finish();
            } else {
                //双击退出当前浏览器
                super.onBackPressed();
            }

        }
    }
}

3.主线程进行调用

下面只列出onCreate方法,通过intent进行传url的值。

MyApplication/app/src/main/java/com/example/myapplication/NewsActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //默认加载的页面
    setContentView(R.layout.activity_main);
    mListView = (ListView) findViewById(R.id.new_main);

    //点击事件
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            //获得保存网址的隐藏对象
            TextView content= (TextView) view.findViewById(R.id.new_content);
            //传递的activity
            Intent intent = new Intent(MainActivity.this, NewsActivity.class);
            //保存参数
            intent.putExtra("content_url", content.getText().toString());
                //向下传值
            startActivity(intent);
        }
    });
    //发起URL请求
    new NewsAsyncTask().execute(URL);
}