package com.haicaojie.android.ui.invite;
|
|
import android.app.Notification;
|
import android.app.NotificationManager;
|
import android.content.ClipData;
|
import android.content.ClipboardManager;
|
import android.content.ComponentName;
|
import android.content.Intent;
|
import android.graphics.Bitmap;
|
import android.graphics.PixelFormat;
|
import android.net.Uri;
|
import android.os.Build;
|
import android.os.Bundle;
|
import android.provider.Settings;
|
import android.util.Base64;
|
import android.view.KeyEvent;
|
import android.view.View;
|
import android.view.View.OnClickListener;
|
import android.view.Window;
|
import android.view.WindowManager;
|
import android.webkit.JavascriptInterface;
|
import android.webkit.WebChromeClient;
|
import android.webkit.WebResourceError;
|
import android.webkit.WebResourceRequest;
|
import android.webkit.WebSettings;
|
import android.webkit.WebView;
|
import android.webkit.WebViewClient;
|
import android.widget.FrameLayout;
|
import android.widget.LinearLayout;
|
import android.widget.ProgressBar;
|
import android.widget.TextView;
|
import android.widget.Toast;
|
|
import com.ali.auth.third.ui.context.CallbackContext;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.haicaojie.android.BasicTextHttpResponseHandler;
|
import com.haicaojie.android.R;
|
import com.haicaojie.android.ShoppingApi;
|
import com.haicaojie.android.ui.BaseActivity;
|
import com.haicaojie.android.ui.main.MainActivity;
|
import com.haicaojie.android.ui.mine.LoginSelectActivity;
|
import com.haicaojie.android.ui.recommend.GoodsBrowserActivity;
|
import com.haicaojie.android.ui.recommend.GoodsDetailBrowerActivity;
|
import com.haicaojie.android.ui.recommend.SearchActivity;
|
import com.haicaojie.android.util.Tools;
|
import com.lcjian.library.content.ConnectivityChangeHelper;
|
import com.lcjian.library.util.NetUtils;
|
import com.lcjian.library.util.SingleToast;
|
import com.lcjian.library.util.common.PackageUtils2;
|
import com.lcjian.library.util.common.StringUtils;
|
import com.lcjian.library.util.security.MD5Utils;
|
import com.sina.weibo.sdk.api.MultiImageObject;
|
import com.sina.weibo.sdk.api.TextObject;
|
import com.sina.weibo.sdk.api.WeiboMultiMessage;
|
import com.sina.weibo.sdk.share.WbShareCallback;
|
import com.sina.weibo.sdk.share.WbShareHandler;
|
import com.umeng.analytics.MobclickAgent;
|
import com.umeng.socialize.ShareAction;
|
import com.umeng.socialize.UMShareAPI;
|
import com.umeng.socialize.UMShareListener;
|
import com.umeng.socialize.bean.SHARE_MEDIA;
|
import com.umeng.socialize.media.UMImage;
|
import com.ysh.wpc.appupdate.download.DownLoadFile;
|
|
import org.apache.http.Header;
|
import org.json.JSONException;
|
import org.json.JSONObject;
|
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.Iterator;
|
import java.util.List;
|
|
public class ShareBrowserActivity extends BaseActivity implements OnClickListener, WbShareCallback {
|
|
private TextView tv_top_bar_left;
|
private TextView tv_top_bar_left2;
|
private TextView tv_top_bar_middle;
|
private WebView webview;
|
private FrameLayout fl_webview;
|
ProgressBar progressBar;
|
|
|
private LinearLayout ll_no_net;
|
private LinearLayout ll_request_failture;
|
private boolean isNoNet = false;
|
private boolean isFailture = false;
|
private ConnectivityChangeHelper mChangeHelper;
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.browser_activity);
|
/** 计算状态栏高度并设置
|
*/
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
Window window = getWindow();
|
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
|
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
int result = 0;
|
int resourceId = getResources().getIdentifier("status_bar_height",
|
"dimen", "android");
|
if (resourceId > 0) {
|
result = getResources().getDimensionPixelSize(resourceId);
|
}
|
//设置状态栏文字颜色及图标为深色
|
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
|
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
|
result);
|
findViewById(R.id.v_status_bar).setLayoutParams(params);
|
} else {
|
findViewById(R.id.v_status_bar).setVisibility(View.GONE);
|
}
|
|
// String url = getIntent().getStringExtra("url");
|
shareHandler = new WbShareHandler(this);
|
shareHandler.registerApp();
|
|
getWindow().setFormat(PixelFormat.TRANSLUCENT);
|
tv_top_bar_left = (TextView) findViewById(R.id.tv_top_bar_left);
|
tv_top_bar_left2 = (TextView) findViewById(R.id.tv_top_bar_left2);
|
tv_top_bar_left2.setVisibility(View.VISIBLE);
|
tv_top_bar_middle = (TextView) findViewById(R.id.tv_top_bar_middle);
|
fl_webview = (FrameLayout) findViewById(R.id.fl_webview);
|
ll_no_net = (LinearLayout) findViewById(R.id.ll_no_net);
|
ll_request_failture = (LinearLayout) findViewById(R.id.ll_request_failture);
|
tv_top_bar_left2.setText("关闭");
|
tv_top_bar_left.setOnClickListener(this);
|
tv_top_bar_left2.setOnClickListener(this);
|
findViewById(R.id.iv_net_setting).setOnClickListener(this);
|
findViewById(R.id.tv_refresh).setOnClickListener(this);
|
tv_top_bar_left2.setText("关闭");
|
tv_top_bar_left.setOnClickListener(this);
|
tv_top_bar_left2.setOnClickListener(this);
|
mChangeHelper = new ConnectivityChangeHelper(this,
|
new ConnectivityChangeHelper.OnConnectivityChangeListener() {
|
|
@Override
|
public void onNetworkUnAvailable() {
|
}
|
|
@Override
|
public void onNetworkAvailable() {
|
if (isNoNet) {
|
isFailture = false;
|
isNoNet = false;
|
if (StringUtils.isEmpty(getIntent().getStringExtra("url"))) {
|
getGoodsShareUrl();
|
} else {
|
webview.loadUrl(getIntent().getStringExtra("url"));
|
}
|
}
|
}
|
});
|
|
|
webview = new WebView(ShareBrowserActivity.this);
|
fl_webview.addView(webview, new FrameLayout.LayoutParams(
|
FrameLayout.LayoutParams.MATCH_PARENT,
|
FrameLayout.LayoutParams.MATCH_PARENT));
|
WebSettings webSettings = webview.getSettings();
|
webSettings.setJavaScriptEnabled(true);
|
webSettings.setDomStorageEnabled(true);
|
webview.setDrawingCacheEnabled(true);
|
webview.setWebViewClient(new WebViewClient() {
|
@Override
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
isFailture = false;
|
fl_webview.setVisibility(View.VISIBLE);
|
ll_no_net.setVisibility(View.GONE);
|
ll_request_failture.setVisibility(View.GONE);
|
if (url != null && url.startsWith("yestv://share")) {
|
imgs.clear();
|
String murl = url.split("yestv://")[1];
|
String[] params = murl.split("#");
|
byte raw[] = Base64.decode(params[2], Base64.DEFAULT);
|
JSONObject object = null;
|
try {
|
object = new JSONObject(new String(raw));
|
} catch (JSONException e) {
|
e.printStackTrace();
|
}
|
Gson gson = new GsonBuilder().serializeNulls().create();
|
imgs = gson.fromJson(object.optJSONArray("imgs").toString(), new TypeToken<List<String>>() {
|
}.getType());
|
link = object.optString("link");
|
description = object.optString("description");
|
title = object.optString("title");
|
if (params[1].equalsIgnoreCase("wx")) {
|
shareImgs(0);
|
} else if (params[1].equalsIgnoreCase("wxcircle")) {
|
shareImgs(1);
|
} else if (params[1].equalsIgnoreCase("qq")) {
|
shareImgs(2);
|
} else if (params[1].equalsIgnoreCase("qqzone")) {
|
UMImage shareImage = new UMImage(ShareBrowserActivity.this, imgs.get(0));//网络图片
|
new ShareAction(ShareBrowserActivity.this).withMedia(shareImage)
|
.setPlatform(SHARE_MEDIA.QZONE).setCallback(shareListener).share();
|
} else if (params[1].equalsIgnoreCase("sina")) {
|
shareImgs(3);
|
}
|
return true;
|
} else if (url != null && url.startsWith("yestv://copy")) {
|
String murl = url.split("yestv://")[1];
|
String[] params = murl.split("#");
|
byte raw[] = Base64.decode(params[1], Base64.DEFAULT);
|
|
ClipData myClip;
|
ClipboardManager manager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
|
myClip = ClipData.newPlainText("text", new String(raw));
|
manager.setPrimaryClip(myClip);
|
Toast.makeText(ShareBrowserActivity.this, "复制成功",
|
Toast.LENGTH_SHORT).show();
|
return true;
|
} else if (url != null && url.startsWith("yestv://toast")) {
|
String murl = url.split("yestv://")[1];
|
String[] params = murl.split("#");
|
byte raw[] = Base64.decode(params[1], Base64.DEFAULT);
|
String content = new String(raw);
|
Toast.makeText(ShareBrowserActivity.this, content, Toast.LENGTH_LONG).show();
|
return true;
|
}
|
if (!url.startsWith("http"))
|
return true;
|
return super.shouldOverrideUrlLoading(view, url);
|
// return true;
|
}
|
|
@Override
|
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
|
super.onReceivedError(view, request, error);
|
isFailture = true;
|
}
|
|
@Override
|
public void onPageFinished(WebView view, String url) {
|
super.onPageFinished(view, url);
|
// if (isFailture) {
|
// if (NetUtils.getNetworkState(ShareBrowserActivity.this).equalsIgnoreCase(NetUtils.NETWORK_NONE)) {
|
// ll_request_failture.setVisibility(View.GONE);
|
// ll_no_net.setVisibility(View.VISIBLE);
|
// isNoNet = true;
|
// } else {
|
// ll_request_failture.setVisibility(View.VISIBLE);
|
// ll_no_net.setVisibility(View.GONE);
|
// }
|
// fl_webview.setVisibility(View.GONE);
|
// } else {
|
// ll_request_failture.setVisibility(View.GONE);
|
// ll_no_net.setVisibility(View.GONE);
|
// fl_webview.setVisibility(View.VISIBLE);
|
// }
|
}
|
});
|
progressBar = (ProgressBar) findViewById(R.id.myProgressBar);
|
progressBar.setMax(100);
|
progressBar.setProgressDrawable(this.getResources()
|
.getDrawable(R.drawable.color_progressbar));
|
// tv_top_bar_middle.setText(getIntent().getStringExtra("title"));
|
webview.setWebChromeClient(new WebChromeClient() {
|
|
@Override
|
public void onReceivedTitle(WebView view, String title) {
|
tv_top_bar_middle.setText(title);
|
}
|
|
@Override
|
public void onProgressChanged(WebView webView, int i) {
|
if (i == 100) {
|
progressBar.setVisibility(View.GONE);
|
} else {
|
if (View.INVISIBLE == progressBar.getVisibility()) {
|
progressBar.setVisibility(View.VISIBLE);
|
}
|
progressBar.setProgress(i);
|
}
|
super.onProgressChanged(webView, i);
|
}
|
});
|
webview.addJavascriptInterface(new JavaInterface(), "yestv");
|
if (StringUtils.isEmpty(getIntent().getStringExtra("url"))) {
|
getGoodsShareUrl();
|
} else {
|
String url = getIntent().getStringExtra("url");
|
webview.loadUrl(url);
|
}
|
}
|
|
private void getGoodsShareUrl() {
|
ShoppingApi.getGoodsShareUrl(this, getIntent().getStringExtra("goodsId"), new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
String shareUrl = jsonObject.getString("data");
|
webview.loadUrl(shareUrl);
|
} else {
|
Toast.makeText(ShareBrowserActivity.this, jsonObject.optString("msg"), Toast.LENGTH_LONG).show();
|
}
|
}
|
|
@Override
|
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
|
super.onFailure(statusCode, headers, responseString, throwable);
|
}
|
});
|
}
|
|
UMShareListener shareListener = new UMShareListener() {
|
@Override
|
public void onStart(SHARE_MEDIA share_media) {
|
|
}
|
|
@Override
|
public void onResult(SHARE_MEDIA share_media) {
|
runOnUiThread(new Thread(new Runnable() {
|
@Override
|
public void run() {
|
Toast.makeText(ShareBrowserActivity.this, "分享成功!", Toast.LENGTH_LONG).show();
|
}
|
}));
|
}
|
|
@Override
|
public void onError(SHARE_MEDIA share_media, final Throwable throwable) {
|
// Toast.makeText(ShareBrowserActivity.this, "分享出错!" + throwable, Toast.LENGTH_LONG).show();
|
runOnUiThread(new Thread() {
|
@Override
|
public void run() {
|
super.run();
|
SingleToast.showToast(ShareBrowserActivity.this, "分享出错!");
|
}
|
});
|
|
}
|
|
@Override
|
public void onCancel(SHARE_MEDIA share_media) {
|
Toast.makeText(ShareBrowserActivity.this, "分享取消!", Toast.LENGTH_LONG).show();
|
}
|
};
|
|
/**
|
* 多张图片分享 platform--0 微信好友
|
* platform--1 朋友圈
|
* platform--2 QQ
|
*
|
* @param platfrom
|
*/
|
private List<String> imgs = new ArrayList<>();
|
private List<File> files = new ArrayList<>();
|
String title = "";
|
String description = "";
|
String link = "";
|
boolean isDownloadFinish = false;
|
|
private void shareImgs(final int platfrom) {
|
int avilibleValue = 0;
|
if (platfrom == 0 || platfrom == 1) {
|
avilibleValue = Tools.isWeixinAvilible(this);
|
} else if (platfrom == 2) {
|
avilibleValue = Tools.isQQAvilible(this);
|
} else if (platfrom == 3) {
|
avilibleValue = Tools.isSinaAvilible(this);
|
}
|
if ((platfrom == 0 || platfrom == 1) && (avilibleValue == 1 || avilibleValue == 2)) {
|
if (avilibleValue == 2)
|
Toast.makeText(ShareBrowserActivity.this, "您还没有安装微信", Toast.LENGTH_SHORT).show();
|
} else if (platfrom == 2 && (avilibleValue == 1 || avilibleValue == 2)) {
|
if (avilibleValue == 2)
|
Toast.makeText(ShareBrowserActivity.this, "您还没有安装QQ", Toast.LENGTH_SHORT).show();
|
} else if (platfrom == 3 && (avilibleValue == 1 || avilibleValue == 2)) {
|
if (avilibleValue == 2)
|
Toast.makeText(ShareBrowserActivity.this, "您还没有安装微博", Toast.LENGTH_SHORT).show();
|
} else {
|
files.clear();
|
isDownloadFinish = false;
|
File storageDir = ShareBrowserActivity.this.getExternalCacheDir();
|
if (storageDir.exists() && storageDir.isDirectory()) {
|
storageDir.delete();
|
File file1[] = storageDir.listFiles();
|
for (File file : file1) {
|
try {
|
file.delete();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
for (int i = 0; i < imgs.size(); i++) {
|
final int j = i;
|
final Thread thread = new Thread(new Runnable() {
|
@Override
|
public void run() {
|
File file = Tools.saveImageToSdCard(ShareBrowserActivity.this, imgs.get(j));
|
files.add(file);
|
if (files.size() == imgs.size() && !isDownloadFinish) {
|
isDownloadFinish = true;
|
for (int k = 0; k < files.size(); k++) {
|
if (files.get(k) == null) {
|
files.remove(k);
|
k--;
|
}
|
}
|
Intent intent = new Intent();
|
ComponentName comp;
|
if (platfrom == 0) {
|
comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
|
} else if (platfrom == 1) {
|
comp = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");
|
intent.putExtra("Kdescription", title);
|
} else {
|
comp = new ComponentName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity");
|
}
|
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
|
intent.setType("image/*");
|
|
ArrayList<Uri> imageUris = new ArrayList<Uri>();
|
for (File f : files) {
|
imageUris.add(Uri.fromFile(f));
|
}
|
if (platfrom == 3) {
|
WeiboMultiMessage weiboMessage = new WeiboMultiMessage();
|
MultiImageObject multiImageObject = new MultiImageObject();
|
weiboMessage.textObject = getTextObj();
|
multiImageObject.setImageList(imageUris);
|
weiboMessage.multiImageObject = multiImageObject;
|
shareHandler.shareMessage(weiboMessage, true);
|
} else {
|
intent.setComponent(comp);
|
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
|
startActivity(intent);
|
}
|
}
|
}
|
});
|
thread.start();
|
}
|
}
|
|
}
|
|
/**
|
* 创建文本消息对象。
|
*
|
* @return 文本消息对象。
|
*/
|
private TextObject getTextObj() {
|
TextObject textObject = new TextObject();
|
textObject.text = description;
|
textObject.title = title;
|
textObject.actionUrl = link;
|
return textObject;
|
}
|
|
|
@Override
|
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
CallbackContext.onActivityResult(requestCode, resultCode, data);
|
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
|
}
|
|
@Override
|
public void onResume() {
|
super.onResume();
|
mChangeHelper.registerReceiver();
|
MobclickAgent.onPageStart("网页");
|
}
|
|
@Override
|
public void onPause() {
|
super.onPause();
|
mChangeHelper.unregisterReceiver();
|
MobclickAgent.onPageEnd("网页");
|
}
|
|
@Override
|
protected void onDestroy() {
|
if (webview != null) {
|
webview.destroy();
|
}
|
super.onDestroy();
|
shareHandler = null;
|
}
|
|
|
@Override
|
public void onClick(View v) {
|
switch (v.getId()) {
|
case R.id.tv_top_bar_left: {
|
finish();
|
}
|
break;
|
case R.id.tv_top_bar_left2: {
|
finish();
|
}
|
break;
|
case R.id.iv_net_setting:
|
startActivity(new Intent(Settings.ACTION_SETTINGS));
|
break;
|
case R.id.tv_refresh:
|
startActivity(new Intent(Settings.ACTION_SETTINGS));
|
break;
|
default:
|
break;
|
}
|
}
|
|
@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 JavaInterface {
|
|
@JavascriptInterface
|
public String getUid() {
|
return getSharedPreferences("user", MODE_PRIVATE).getString("uid", "0");
|
}
|
|
@JavascriptInterface
|
public String getVersion() {
|
return PackageUtils2.getVersionCode(ShareBrowserActivity.this) + "";
|
}
|
|
@JavascriptInterface
|
public void toast(String str) {
|
Toast.makeText(ShareBrowserActivity.this, str, Toast.LENGTH_LONG).show();
|
}
|
|
@JavascriptInterface
|
public String getSign(String str) {
|
return MD5Utils.getMD532(str + "@?,223Hbb88lll");
|
}
|
|
|
@JavascriptInterface
|
public void jumpGoodsSplash(long id) {
|
Intent intent = new Intent(ShareBrowserActivity.this, GoodsBrowserActivity.class);
|
intent.putExtra("id", id + "");
|
startActivity(intent);
|
}
|
|
@JavascriptInterface
|
public void jumpInvite() {
|
Intent intent = new Intent(ShareBrowserActivity.this, InviteFriendsActivity.class);
|
startActivity(intent);
|
}
|
|
@JavascriptInterface
|
public void jumpSearch(String key) {
|
Intent intent = new Intent(ShareBrowserActivity.this, SearchActivity.class);
|
intent.putExtra("key", key);
|
startActivity(intent);
|
}
|
|
@JavascriptInterface
|
public void jumpGoodsDetail(long id) {
|
Intent intent = new Intent(ShareBrowserActivity.this, GoodsDetailBrowerActivity.class);
|
intent.putExtra("id", id + "");
|
intent.putExtra("isTrolley", true);
|
startActivity(intent);
|
}
|
|
@JavascriptInterface
|
public void jumpPage(String pageClassName, String paramJson) {
|
Intent intent = null;
|
JSONObject param = null;
|
try {
|
if (StringUtils.isEmpty(paramJson)) {
|
param = null;
|
} else {
|
param = new JSONObject(paramJson);
|
}
|
if (StringUtils.isEmpty(pageClassName)) {
|
return;
|
} else {
|
intent = new Intent(ShareBrowserActivity.this, Class.forName(pageClassName));
|
}
|
} catch (JSONException e) {
|
param = null;
|
e.printStackTrace();
|
} catch (ClassNotFoundException e) {
|
e.printStackTrace();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
if (null != param) {
|
@SuppressWarnings("unchecked")
|
Iterator<String> its = param.keys();
|
while (its.hasNext()) {
|
String key = its.next();
|
String value = param.optString(key);
|
intent.putExtra(key, value);
|
}
|
}
|
startActivity(intent);
|
}
|
|
@JavascriptInterface
|
public void login() {
|
Intent intent = new Intent(ShareBrowserActivity.this, LoginSelectActivity.class);
|
startActivity(intent);
|
}
|
}
|
|
|
@Override
|
protected void onNewIntent(Intent intent) {
|
super.onNewIntent(intent);
|
shareHandler.doResultIntent(intent, this);
|
}
|
|
|
private WbShareHandler shareHandler;
|
|
@Override
|
public void onWbShareCancel() {
|
Toast.makeText(this, "分享取消", Toast.LENGTH_LONG).show();
|
}
|
|
@Override
|
public void onWbShareFail() {
|
Toast.makeText(this, "分享失败", Toast.LENGTH_LONG).show();
|
}
|
|
@Override
|
public void onWbShareSuccess() {
|
Toast.makeText(this, "分享成功", Toast.LENGTH_LONG).show();
|
}
|
}
|