package com.tejia.lijin.app.util;
|
|
import android.app.Activity;
|
import android.content.SharedPreferences;
|
import android.os.Bundle;
|
import android.os.Handler;
|
import android.os.Message;
|
import android.util.Log;
|
import android.webkit.JavascriptInterface;
|
import android.webkit.WebChromeClient;
|
import android.webkit.WebSettings;
|
import android.webkit.WebView;
|
import android.webkit.WebViewClient;
|
|
import com.alibaba.baichuan.android.trade.model.AlibcShowParams;
|
import com.alibaba.baichuan.trade.biz.AlibcConstants;
|
import com.alibaba.baichuan.trade.biz.applink.adapter.AlibcFailModeType;
|
import com.alibaba.baichuan.trade.biz.core.taoke.AlibcTaokeParams;
|
import com.google.gson.Gson;
|
import com.google.gson.GsonBuilder;
|
import com.google.gson.reflect.TypeToken;
|
import com.wpc.library.util.common.StringUtils;
|
import com.wpc.library.util.security.DEScrypt;
|
import com.tejia.lijin.app.BasicTextHttpResponseHandler;
|
import com.tejia.lijin.app.ShoppingApi;
|
import com.tejia.lijin.app.util.baichuan.AlibcTradeUtil;
|
|
import org.apache.http.Header;
|
import org.json.JSONObject;
|
|
import java.lang.reflect.Type;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Random;
|
|
import static android.content.Context.MODE_PRIVATE;
|
|
public class TrolleyTransformationLink {
|
|
private Activity mContext;
|
WebView webview;
|
private AlibcShowParams alibcShowParams;//页面打开方式,默认,H5,Native
|
private Map<String, String> exParams;//yhhpass参数
|
AlibcTaokeParams alibcTaokeParams;
|
private String cartJS;
|
|
public TrolleyTransformationLink(Activity context) {
|
mContext = context;
|
initView();
|
}
|
|
private void initView() {
|
webview = new WebView(mContext);
|
WebSettings webSettings = webview.getSettings();
|
webSettings.setJavaScriptEnabled(true);
|
webSettings.setDomStorageEnabled(true);
|
webSettings.setAppCacheEnabled(true);
|
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
|
webSettings.setDatabaseEnabled(true);
|
webSettings.setTextZoom(100);
|
webview.setDrawingCacheEnabled(true);
|
webview.setWebViewClient(mWebviewClient);
|
webview.addJavascriptInterface(new JavaInterface(), "handle");
|
alibcShowParams = new AlibcShowParams();
|
exParams = new HashMap<>();
|
exParams.put(AlibcConstants.ISV_CODE, "appisvcode");
|
exParams.put("alibaba", "阿里巴巴");//自定义参数部分,可任意增删
|
}
|
|
WebViewClient mWebviewClient = new WebViewClient() {
|
@Override
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
// Log.e("mResult", url);
|
if (url.contains("//h5.m.taobao.com/awp/core/detail.htm?")
|
|| url.contains("//detail.m.tmall.com/item.htm?")
|
|| url.contains("//item.taobao.com/item.htm?")) {
|
// getTaoBaoLink(url);
|
} else if (url.contains("/tbopen/") || url.startsWith("tbopen://")) {
|
return true;
|
}
|
return super.shouldOverrideUrlLoading(view, url);
|
}
|
|
@Override
|
public void onPageFinished(WebView view, String url) {
|
// Log.e("mResult", "onPageFinished");
|
view.loadUrl("javascript:" + cartJS);
|
super.onPageFinished(view, url);
|
}
|
};
|
|
public void getTaoBaoCartConfig(String position) {
|
if (mContext == null) {
|
return;
|
}
|
String uid = mContext.getSharedPreferences("user",
|
MODE_PRIVATE).getString("uid", "0");
|
ShoppingApi.getTaoBaoCartConfig(mContext, uid, position, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optInt("code") == 0) {
|
cartJS = jsonObject.optJSONObject("data").optString("js");
|
String link = jsonObject.optJSONObject("data").optString("link");
|
cartJS = DEScrypt.decode(cartJS, "WWVTaGlGQU5MSTg4OSor", "Kk0jMzRmPyw=");
|
link = DEScrypt.decode(link, "WWVTaGlGQU5MSTg4OSor", "Kk0jMzRmPyw=");
|
showCart(link);
|
}
|
}
|
});
|
}
|
|
|
/**
|
* 显示我的购物车
|
*/
|
private void showCart(String link) {
|
// AlibcBasePage alibcBasePage = new AlibcMyCartsPage();
|
// AlibcTrade.show(mContext, webview, mWebviewClient, new WebChromeClient(), alibcBasePage,
|
// alibcShowParams, alibcTaokeParams, null, new MiDuoTradeCallback(""));
|
jumpWeb(link, webview);
|
}
|
|
boolean isLoadShow = false;
|
|
class JavaInterface {
|
@JavascriptInterface
|
public void show(final String ids) {
|
// Log.e("mResult", "JavaInterface.show" + ids);
|
final SharedPreferences sp = mContext.getSharedPreferences("user", MODE_PRIVATE);
|
String data = sp.getString("TrolleyTransformationLink", "");
|
final Gson gson = new GsonBuilder().serializeNulls().create();
|
Type listType = new TypeToken<List<String>>() {
|
}.getType();
|
List<String> list = new ArrayList<>();
|
if (!StringUtils.isEmpty(data)) {
|
list = gson.fromJson(data, listType);
|
}
|
if (!isLoadShow) {
|
final String[] ids1 = ids.split(",");
|
int index = 0;
|
for (int i = 0; i < ids1.length; i++) {
|
if (null == list || (null != list && !list.contains(ids1[i]))) {
|
index++;
|
final int index1 = index;
|
final String goodsId = ids1[i];
|
final List<String> mList = list;
|
new Thread(new Runnable() {
|
@Override
|
public void run() {
|
try {
|
Random random = new Random();
|
int randomNum = random.nextInt(2000) + 2000;
|
Log.e("mResult", "休眠时间---:" + randomNum);
|
long sleepTime = randomNum * index1;
|
Thread.sleep(sleepTime);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
getTBLinkInfo(goodsId);
|
|
mList.add(goodsId);
|
String datas = gson.toJson(mList);
|
SharedPreferences.Editor editor = sp.edit();
|
editor.putString("TrolleyTransformationLink", datas);
|
editor.commit();
|
|
if (index1 >= ids1.length) {
|
Thread.interrupted();
|
}
|
}
|
}).start();
|
}
|
}
|
isLoadShow = !isLoadShow;
|
}
|
}
|
|
/**
|
* 打开指定链接
|
*/
|
private void showGoods(String url) {
|
if (mContext == null)
|
return;
|
WebView webView = new WebView(mContext);
|
webView.setDrawingCacheEnabled(true);
|
webView.setWebViewClient(new WebViewClient());
|
webView.getSettings().setJavaScriptEnabled(true);
|
alibcTaokeParams = null;
|
// Log.e("mResult", "showGoods" + url);
|
// AlibcPage alibcBasePage = new AlibcPage(url);
|
// AlibcTrade.show(mContext, webView, new WebViewClient(), new WebChromeClient(), alibcBasePage,
|
// alibcShowParams, alibcTaokeParams, null, new MiDuoTradeCallback(""));
|
jumpWeb(url, webView);
|
}
|
|
Handler handler = new Handler() {
|
@Override
|
public void handleMessage(Message msg) {
|
super.handleMessage(msg);
|
if (msg.what == 0) {
|
Bundle data = msg.getData();
|
String url = data.getString("url");
|
showGoods(url);
|
}
|
}
|
};
|
|
/**
|
* 获取PID 信息
|
*/
|
private void getTBLinkInfo(String goodsId) {
|
SharedPreferences sp = mContext.getSharedPreferences("user", MODE_PRIVATE);
|
String uid = sp.getString("uid", "");
|
Log.e("mResult", "uid---" + uid);
|
ShoppingApi.getTBLinkInfo(mContext, uid, goodsId, "convertLink", null, new BasicTextHttpResponseHandler() {
|
@Override
|
public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
|
if (jsonObject.optString("code").equalsIgnoreCase("0")) {
|
JSONObject object = jsonObject.optJSONObject("data").optJSONObject("link");
|
String clickUrl = "";
|
if (object != null) {
|
clickUrl = object.optString("clickUrl");
|
}
|
if (StringUtils.isEmpty(clickUrl))
|
return;
|
|
Message msg = Message.obtain();
|
Bundle data = new Bundle();
|
data.putString("url", clickUrl);
|
msg.what = 0;
|
msg.setData(data);
|
handler.sendMessage(msg);
|
}
|
}
|
});
|
}
|
}
|
|
/**
|
* 百川详情页跳转网页
|
*/
|
private void jumpWeb(String url, WebView mWebView) {
|
Map<String, String> trackParams = new HashMap<>();
|
alibcShowParams.setNativeOpenFailedMode(AlibcFailModeType.AlibcNativeFailModeJumpH5);
|
// AlibcTrade.openByUrl(mContext, "", url, mWebView, mWebviewClient, new WebChromeClient(),
|
// alibcShowParams, alibcTaokeParams, trackParams, new MiDuoTradeCallback(""));
|
|
AlibcTradeUtil.openByUrl(mContext, url, mWebView, mWebviewClient, new WebChromeClient(),
|
alibcShowParams, alibcTaokeParams, null);
|
}
|
}
|