本文最后更新于 1648 天前,其中的信息可能已经有所发展或是发生改变。
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);
}