package cn.com.scitc.swl.rssnews.activity;
import java.util.List;
import org.json.JSONException;
import org.json.JSONObject;
import com.sina.weibo.sdk.exception.WeiboException;
import com.sina.weibo.sdk.net.RequestListener;
import com.sina.weibo.sdk.openapi.StatusesAPI;
import cn.com.scitc.swl.rssnews.R;
import cn.com.scitc.swl.rssnews.constants.AccessTokenKeeper;
import cn.com.scitc.swl.rssnews.model.RssNews;
import cn.com.scitc.swl.rssnews.service.FileService;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ProgressBar;
public class RssDetailActivity extends Activity implements View.OnClickListener {
private WebView webView;
private ProgressBar bar;
private Button btnBack;
private Button btnShare;
private CheckBox btnCollect;
private Button btnRefresh;
/** 底部工具栏 */
private LinearLayout linearLayout;
/** 新闻数据 */
private String list;
/** 新闻数据 */
private RssNews news = new RssNews();
/** 用于控制是否第一次收藏 */
private int cilckCount = 0;
private StatusesAPI statusesAPI;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rss_detail);
initView();
initData();
new Thread(new Runnable() {
@Override
public void run() {
webView.loadUrl(news.link);
}
}).start();
}
@SuppressLint("SetJavaScriptEnabled")
private void initView() {
bar = (ProgressBar) findViewById(R.id.deatail_pb);
bar.setMax(100);
btnBack = (Button) findViewById(R.id.rss_btn_back);
btnBack.setOnClickListener(this);
btnShare = (Button) findViewById(R.id.rss_btn_share);
btnShare.setOnClickListener(this);
btnCollect = (CheckBox) findViewById(R.id.rss_btn_collect);
btnCollect.setOnClickListener(this);
btnCollect.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// 此处为第一次收藏,如果已收藏的话就不在缓存和提示
if (arg1 && cilckCount == 0) {
FileService.savaImgToSdcard(news.imgName + ".txt",
Context.MODE_PRIVATE, list.getBytes(), "rssCollect");
Toast.makeText(RssDetailActivity.this, "收藏成功啦!",
Toast.LENGTH_SHORT).show();
List<RssNews> list = FileService.readListFile("rssCollect");
System.out.println("list===>" + list.toString());
} else if (arg1 == false) {
FileService.delFile(news.imgName + ".txt", "rssCollect");
Toast.makeText(RssDetailActivity.this, "取消收藏成功!",
Toast.LENGTH_SHORT).show();
cilckCount = 0;
}
}
});
btnRefresh = (Button) findViewById(R.id.rss_btn_refresh);
btnRefresh.setOnClickListener(this);
linearLayout = (LinearLayout) findViewById(R.id.rss_bottom_ll);
webView = (WebView) findViewById(R.id.rss_webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDefaultTextEncodingName("UTF-8");
webView.setWebViewClient(new WebClient());
webView.setWebChromeClient(new WebChrome());
}
private void initData() {
list = getIntent().getExtras().getString("list");
try {
JSONObject jsonObject = new JSONObject(list);
news = RssNews.parse(jsonObject);
System.out.println("jsonObject===>" + news.toString());
} catch (JSONException e) {
e.printStackTrace();
}
if (FileService.readImgFromSdcard(news.imgName + ".txt",
Context.MODE_PRIVATE, "rssCollect") != null) {
cilckCount++;
btnCollect.setChecked(true);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack(); // goBack()表示返回WebView的上一页面
return true;
}
return super.onKeyDown(keyCode, event);
}
class WebClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
private class WebChrome extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {
bar.setProgress(newProgress);
if (newProgress == 100) {
bar.setVisibility(View.GONE);
webView.setVisibility(View.VISIBLE);
linearLayout.setVisibility(View.VISIBLE);
}
super.onProgressChanged(view, newProgress);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rss_btn_back:
finish();
break;
case R.id.rss_btn_collect:
break;
case R.id.rss_btn_share:
// 判断是否已经登录
if (AccessTokenKeeper.readAccessToken(this).isSessionValid()) {
final AlertDialog dialog = new AlertDialog.Builder(this)
.create();
dialog.show();
Window window = dialog.getWindow();
//解决对话框中输入框不弹出输入法
window.clearFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
window.setContentView(R.layout.share_alert_dialog);
TextView title = (TextView) window
.findViewById(R.id.dialog_title);
final EditText text = (EditText) window
.findViewById(R.id.share_edittext);
title.setText("分享内容");
window.findViewById(R.id.share_btn_ok).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
// 已经登录就创建分享接口
statusesAPI = new StatusesAPI(
AccessTokenKeeper
.readAccessToken(RssDetailActivity.this));
statusesAPI
.update(text.getText().toString()
+ " #"
+ news.title
+ "# "
+ news.link, "0.0", "0.0",
new RequestListener() {
@Override
public void onWeiboException(
WeiboException e) {
e.printStackTrace();
}
@Override
public void onComplete(
String response) {
if (!TextUtils
.isEmpty("response"))
Toast.makeText(
RssDetailActivity.this,
"分享成功",
Toast.LENGTH_SHORT)
.show();
System.out
.println("response===>"
+ response);
}
});
dialog.dismiss();
}
});
window.findViewById(R.id.share_btn_cancel).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View arg0) {
dialog.cancel();
}
});
} else {
Toast.makeText(RssDetailActivity.this, "你还没有登录哦!赶快登录吧!",
Toast.LENGTH_SHORT).show();
}
break;
case R.id.rss_btn_refresh:
webView.reload();
break;
}
}
}