package com.yyq.today_news.activity;
import java.io.InputStream;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebView.HitTestResult;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.PopupWindow;
import android.widget.Toast;
import com.umeng.socialize.bean.SHARE_MEDIA;
import com.umeng.socialize.controller.UMServiceFactory;
import com.umeng.socialize.controller.UMSocialService;
import com.umeng.socialize.media.UMImage;
import com.umeng.socialize.sso.QZoneSsoHandler;
import com.umeng.socialize.sso.UMQQSsoHandler;
import com.yyq.nowday.bean.Beijing_NewsData;
import com.yyq.nowday.db.DataEdit_Recommend;
import com.yyq.nowday.tools.HttpUtils;
import com.yyq.nowday.tools.LoadImageUtils;
import com.yyq.nowday.view.TouchImageView;
import com.yyq.today_news.R;
public class WebView_Activity extends Activity {
private WebView webview;
private Document doc;
// private String url;
private String html;
private String replaceAll;
private ImageView iv_right_return;
private Beijing_NewsData beijing_NewsData;
private CheckBox collect;
private DataEdit_Recommend dataEdit_Recommend;
private ImageButton btn_web_share;
Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
// webview.loadData(html, "text/html;charset=utf-8", null); //加载截取网页内容并设置编码格式
setWebView(beijing_NewsData.getTitle(),beijing_NewsData.getPtime(), html);
}
};
private UMSocialService mController;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
init();
initData();
// 1,快速集成了jar包,修改了menifest文件
// 2,加入分享代码
// 首先在您的Activity中添加如下成员变量
mController = UMServiceFactory.getUMSocialService("com.umeng.share");
// 设置分享内容
mController
.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能,"+beijing_NewsData.getUrl());
// 设置分享图片, 参数2为图片的url地址
// mController.setShareMedia(new UMImage(this,beijing_NewsData.getImgsr()));
// 设置分享图片,参数2为本地图片的资源引用
mController.setShareMedia(new UMImage(this, R.drawable.ic_launcher));
// 设置分享图片,参数2为本地图片的路径(绝对路径)
// mController.setShareMedia(new UMImage(getActivity(),
// BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));
// 设置分享音乐
// UMusic uMusic = new
// UMusic("http://sns.whalecloud.com/test_music.mp3");
// uMusic.setAuthor("GuGu");
// uMusic.setTitle("天籁之音");
// 设置音乐缩略图
// uMusic.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");
// mController.setShareMedia(uMusic);
// 设置分享视频
// UMVideo umVideo = new UMVideo(
// "http://v.youku.com/v_show/id_XNTE5ODAwMDM2.html?f=19001023");
// 设置视频缩略图
// umVideo.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");
// umVideo.setTitle("友盟社会化分享!");
// mController.setShareMedia(umVideo);
addplatform();
Listeners();
}
public void addplatform(){
//qq
addqq();
//qqzone
addqqzone();
}
/**
* 监听设置
*/
private void Listeners() {
iv_right_return.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
collect.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
if (dataEdit_Recommend.selectItem(beijing_NewsData.getDocid())!=null) {
Toast.makeText(WebView_Activity.this, "已经收藏", Toast.LENGTH_SHORT).show();
}else {
dataEdit_Recommend.collectData(beijing_NewsData, isChecked);
Toast.makeText(WebView_Activity.this, "收藏成功", Toast.LENGTH_SHORT).show();
}
} else {
if (dataEdit_Recommend.deleteData(beijing_NewsData.getDocid())) {
Toast.makeText(WebView_Activity.this, "取消收藏", Toast.LENGTH_SHORT).show();
}
}
}
});
btn_web_share.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mController.getConfig().removePlatform( SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN);
mController.openShare(WebView_Activity.this, false);
}
});
}
private void init() {
webview=(WebView) findViewById(R.id.wv_window);
btn_web_share=(ImageButton) findViewById(R.id.btn_web_share);
iv_right_return=(ImageView) findViewById(R.id.iv_right_return);
collect=(CheckBox) findViewById(R.id.cb_web_collect);
}
/**
* 接受intent的数据
*/
private void initData() {
Intent intent=getIntent();
// url = intent.getStringExtra("url");
beijing_NewsData = (Beijing_NewsData) intent.getSerializableExtra("beijing_NewsData");
dataEdit_Recommend = new DataEdit_Recommend(WebView_Activity.this);
WebSettings set = webview.getSettings();//webview设置编码格式
set.setDatabasePath("utf-8");
set.setJavaScriptEnabled(true);
new Thread() {
public void run() {
load(beijing_NewsData.getUrl());//网页加载
}
}.start();
webview.setWebChromeClient(new MychromClient());
webview.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
HitTestResult hitTestResult = ((WebView) v).getHitTestResult();
if (null == hitTestResult) {
System.out.println("非图片");
return false;
}else{
if (hitTestResult.getType() == HitTestResult.IMAGE_TYPE) {
try {
System.out.println("点击到了图片。。。。。。。。。。。。。");
showpopup(hitTestResult.getExtra().toString()); //图片URL
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
}
});
WebSettings webSetting = webview.getSettings();
webSetting.setBuiltInZoomControls(true); // 设置显示缩放按钮
webSetting.setSupportZoom(true); // 支持缩放
}
/**
* 截取需要的网页信息
*/
protected void load(String url) {
try {
doc = Jsoup.parse(new URL(url), 5000);
Elements e = doc.getElementsByClass("content");
html = e.html();
replaceAll = html.replaceAll("<img [^>]*/>", "");
System.out.println(replaceAll);
handler.sendEmptyMessage(1);
} catch (Exception e1) {
e1.printStackTrace();
}
}
/**
* 将信息显示到WebView上
*/
private void setWebView(String title,String date,String value) {
String htmlContent = "";
try {
InputStream in = getAssets().open("context.html");
byte[] tmp = HttpUtils.readInputStream(in);
htmlContent = new String(tmp);
//checkParams(); // 最后校验属性,防止异常标签引发的异常
webview.loadData(htmlContent.replace("@title", title)
.replace("@pubdate", date)
.replace("@content", value), "text/html;charset=utf-8",null);
} catch (Exception e) {
e.printStackTrace();
}
}
public void showpopup(String url) throws Exception{
TouchImageView img = new TouchImageView(this);
img.setMaxZoom(4f);
img.setScaleType(ScaleType.FIT_XY);
LoadImageUtils.loadImageFromNet(url, img);
final PopupWindow popupWindow = new PopupWindow(img,
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, true);
// popupWindow.setTouchable(false);
// popupWindow.setOutsideTouchable(false);
// 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
// 我觉得这里是API的一个bug
ColorDrawable dw = new ColorDrawable(-00000);
popupWindow.setBackgroundDrawable(dw);
img.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
}
});
// 设置好参数之后再show
popupWindow.showAsDropDown(img);
}
class MychromClient extends WebChromeClient{
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
result.cancel();
AlertDialog.Builder builder=new AlertDialog.Builder(WebView_Activity.this);
builder.setTitle("提示窗口");
builder.setMessage(message);
builder.create().show();
return true;
}
@Override
public boolean onJsConfirm(WebView view, String url, String message,
final JsResult result) {
AlertDialog.Builder dialog = new AlertDialog.Builder(WebView_Activity.this);
dialog.setIcon(R.drawable.ic_launcher)
.setTitle("确认提示框")
.setMessage(message)
.setPositiveButton("确认", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.confirm();//用户选择了对话框的确认,表示继续向下走代码,把系统的确认框给确认了
}
} )
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
result.cancel();//用户选择了对话框的取消,表示不再向下走代码,把系统的确认框给取消了
}
}).create().show();
return true;
}
}
/**
* 后退键操作设置
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode==KeyEvent.KEYCODE_BACK&&webview.canGoBack()) {
webview.goBack();
}else{
super.onKeyDown(keyCode, event);
}
return true;
}
public void addqq(){
//参数1为当前Activity,参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.
UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(this, "100424468",
"c7394704798a158208a74ab60104f0ba");
qqSsoHandler.addToSocialSDK();
}
public void addqqzone(){
//参数1为当前Activity,参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.
QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(this, "100424468",
"c7394704798a158208a74ab60104f0ba");
qZoneSsoHandler.addToSocialSDK();
}
}
WebView
最新推荐文章于 2025-03-25 19:51:22 发布