package com.mgw.member.ui.fragment;
import java.io.File;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;
import com.easemob.chat.EMContactManager;
import com.easemob.exceptions.EaseMobException;
import com.google.gson.Gson;
import com.hx.hxchat.activity.AlertDialog;
import com.hx.hxchat.utils.CommonUtils;
import com.mgw.member.R;
import com.mgw.member.bean.UserInfoBean;
import com.mgw.member.constant.Define_C;
import com.mgw.member.factory.MgwWebViewFactory;
import com.mgw.member.http.Http;
import com.mgw.member.interfaces.initZxingListener;
import com.mgw.member.js.dao.JsCnative;
import com.mgw.member.manager.BaseApplication;
import com.mgw.member.manager.UpdateManager;
import com.mgw.member.ottoEvent.BusProvider;
import com.mgw.member.ottoEvent.MallFragmentNeedRefreshEvent;
import com.mgw.member.ottoEvent.ReGetLoginInfoEvent;
import com.mgw.member.ui.activity.ChangeSkinActivity;
import com.mgw.member.ui.activity.MGWBaseActivity;
import com.mgw.member.ui.activity.MainActivity;
import com.mgw.member.ui.activity.OrderFinishActivity;
import com.mgw.member.ui.activity.PayTypeActivity;
import com.mgw.member.ui.activity.PayingActivity;
import com.mgw.member.ui.activity.SaomadengluActivity;
import com.mgw.member.ui.activity.SubWebviewActivity;
import com.mgw.member.ui.activity.UpdateAlertDialog;
import com.mgw.member.ui.activity.cityleague.CityleagueActivity;
import com.mgw.member.ui.fragment.HomeFragment.Handle;
import com.mgw.member.ui.fragment.HomeFragment.MyWebChromeClient_Home;
import com.mgw.member.ui.fragment.HomeFragment.MyWebViewClient_Home;
import com.mgw.member.uitls.FileUtils;
import com.mgw.member.uitls.LogUtils;
import com.mgw.member.uitls.NetworkProber;
import com.mgw.member.uitls.UIUtils;
import com.mgw.member.uitls.Utils;
import com.squareup.otto.Bus;
import com.squareup.otto.Produce;
import com.zxing.activity.CaptureActivity;
/**
*
* @author huyan Create On 2015/2/10. description:所有的html展示页面由这个fragment显装载
*/
public class FindFragment extends BaseFragment {
// private String defaultUrl = "file:///android_asset/wenquan/index.html";
/** 在这里改了html的读取路径 */
private String defaultUrl = Define_C.FIND_URL;
private final String TAG = FindFragment.class.getSimpleName().toString();
private MgwWebViewFactory mWebViewFactory;
/**
* webview容器
*/
private FrameLayout fl_webviews;
private RelativeLayout errorPage;
private String currentUrl = "";
private final String parentPageValue = "";
private FrameLayout fl_root;
private final boolean isContainParentPageValue = false;
public Boolean isErrorPage;
private int currentLoadProgress;
private WebView webview = null;
// <input name="parentPage" />
@SuppressLint({ "NewApi", "JavascriptInterface" })
@Override
public View initView(LayoutInflater inflater) {
LogUtils.i(TAG + "initView");
View view = UIUtils.inflate(R.layout.fragment_find);
webview = (WebView) view.findViewById(R.id.webView);
errorPage = (RelativeLayout) view.findViewById(R.id.rl_error);
// view.findViewById(R.id.refresh).setOnClickListener(new
// OnClickListener() {
//
// @Override
// public void onClick(View v) {
// handler.sendEmptyMessage(MESSAGE_TYPE_WEBPAGER_REFRESH);
// }
// });
webview.addJavascriptInterface(new Handle(), JsCnative.mgwjs);//
// 处理android调用js方法
webViewSetting(webview, new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) { //
webview.goBack(); // 后退
return true; // 已处理
}
}
return false;
}
});
webview.setWebViewClient(new MyWebViewClient_Base());
webview.setWebChromeClient(new MyWebChromeClient_Base());
// String dd=defaultUrl.substring(8);
// if(FileUtils.dirIsExists(dd)){
//
webview.loadUrl(defaultUrl);
//
// }else{
//
//
// }
initClick(view);
return view;
}
private void initClick(View view) {
view.findViewById(R.id.btn_scan).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), CaptureActivity.class);
startActivityForResult(intent, 0);
}
});
view.findViewById(R.id.btn_call).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Utils.callMobliePhone("10010", false);
Intent intent = new Intent(context, UpdateAlertDialog.class);
intent.putExtra("fv_exp", "dddd");
intent.putExtra("FVersion_Name", "123");
intent.putExtra("FVersion_FileURL", "http://file.mgw.cc//Update/2015/4/24/MgwMembertest.apk");
context.startActivity(intent);
}
});
view.findViewById(R.id.btn_exit).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// BaseApplication.getApplication().logout(context);
// ReGetLoginInfoEvent loginInfohEvent = getLoginInfohEvent();
// loginInfohEvent.setNeedGet(true);
// BusProvider.getInstance().post(loginInfohEvent);
}
});
view.findViewById(R.id.btn_changeskin).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
/* 下载的apk文件的保存位置 */
// String savePath =
// Environment.getExternalStorageDirectory().getPath() + "/mgw"
// + "/version.txt";
// String savePath1 =
// Environment.getExternalStorageDirectory().getPath() + "/mgw"
// + "/version1.txt";
// String savePath12=
// Environment.getExternalStorageDirectory().getPath() + "/mgw"
// + "/version3.txt";
// // String readProperties;
// // try {
// // readProperties = FileUtils.readText(savePath, "version",
// "0");
// // } catch (JSONException e) {
// // // TODO Auto-generated catch block
// // e.printStackTrace();
// // }
// //
//
// FileUtils.writeProperties(savePath1, "version", "1111",
// "banb");
// String readProperties = FileUtils.readProperties(savePath12,
// "liuxiang", "jiji0");
//
// LogUtils.i(TAG, "readProperties,=" + readProperties);
// // {version: "1.x.x"}
// new Thread(new Runnable() {
//
// @Override
// public void run() {
// // TODO Auto-generated method stub
// File downLoad =
// Utils.downLoad("http://file.mgw.cc//Update/2015/4/28/html.zip",
// UpdateManager.htmlsavePath, "html.zip",null);
// }
// }).start();
String htmlcode = "1.0.2";
String apkVersionname = "1.0.3";
String hehe = (htmlcode.compareTo(apkVersionname) > 0 ? htmlcode : apkVersionname);
LogUtils.i(TAG, "readProperties,=" + hehe);
}
});
view.findViewById(R.id.btn_cityleague).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(), CityleagueActivity.class);
startActivity(intent);
}
});
}
/**
* js消息处理handler
*/
private Handler handler = new Handler() {
@Override
public void handleMessage(android.os.Message msg) {
if (msg.what == MESSAGE_TYPE_WEBPAGER_ERROR) {
// Toast.makeText(context, "errorpage", 0).show();
errorPage.setVisibility(View.VISIBLE);
} else if (msg.what == MESSAGE_TYPE_WEBPAGER_REFRESH) {
// TODO
webview.loadUrl(currentUrl);
} else if (msg.what == MESSAGE_TYPE_WEBPAGER_OK) {
errorPage.setVisibility(View.GONE);
}
}
};
/**
* js操作本地接口类
*
* @author huyan
*
*/
public class Handle implements JsCnative {
@JavascriptInterface
public void showSource(final String data) {
Map<String, Boolean> map = parseHtmlForIsRootPage(data);
// isContainParentPageValue = map.get("parentPage");
isErrorPage = map.get("errorPage");
LogUtils.i(TAG, "showSource,aa=" + data);
if (NetworkProber.isNetworkAvailable(context) && !isErrorPage) {
handler.sendEmptyMessage(MESSAGE_TYPE_WEBPAGER_OK);
} else {
handler.sendEmptyMessage(MESSAGE_TYPE_WEBPAGER_ERROR);
}
// Toast.makeText(context, "errorpage1", 0).show();
}
@Override
@JavascriptInterface
public void getUserInfo() {
UIUtils.runInMainThread(new Runnable() {
@Override
public void run() {
String aa = getActivity().getSharedPreferences("mgw_data", 0).getString("mgw_data", "");
webview.loadUrl("javascript:setUserInfo('" + aa + "')");
LogUtils.i(TAG, "getUserInfo,aa=" + aa);
}
});
return;
}
@JavascriptInterface
public void transferTo(String url, String parm) {
LogUtils.i(TAG, "transforTo,url=" + url + ",parm=" + parm);
// final String url1 =
// "file:///storage/emulated/0/mgw/unziphtml/html/" + url;
final String url1 = "file://" + FileUtils.getHomeHtmlDir() + url;
// Utils.transforTo(getActivity(),url,parm,1);
UIUtils.runInMainThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
if (!NetworkProber.isNetworkAvailable(context)) {
UIUtils.showToastSafe("网络不可用");
return;
}
Intent intent = new Intent(context, SubWebviewActivity.class);
intent.putExtra("url", url1);
intent.putExtra("type", 1);
intent.putExtra("title", false);
// intent.putExtra("parm", parm == null ? "" : parm);
startActivityForResult(intent, 1);
}
});
}
@Override
@JavascriptInterface
public void setClientInfo(String groupid, String uid, String sid) {
if (!NetworkProber.isNetworkAvailable(context)) {
UIUtils.showToastSafe("网络不可用");
return;
}
SharedPreferences.Editor sharedata = getActivity().getSharedPreferences("mgw_data", 0).edit();
UserInfoBean bean = BaseApplication.getApplication().getBean();
bean.item.groupid = groupid;
bean.item.sid = sid;
bean.item.uid = uid;
String json = new Gson().toJson(bean);
LogUtils.i(TAG, "setClientInfo,json=" + json.toString());
try {
JSONObject jsonObject = new JSONObject(json);
JSONObject jsonObject2 = jsonObject.getJSONObject("item");
sharedata.putString("mgw_data", jsonObject2.toString());
sharedata.commit();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
@JavascriptInterface
public void toConsulter(String userid) {
if ((MGWBaseActivity) getActivity() != null) {
((MGWBaseActivity) getActivity()).beepManager.playBeepSoundAndVibrate();
}
if (!NetworkProber.isNetworkAvailable(context)) {
UIUtils.showToastSafe("网络不可用");
return;
}
// TODO Auto-generated method stub
LogUtils.i(TAG, "toConsulter,userid=" + userid);
if ("".equals(userid)) {
return;
}
Utils.toConsulterHX(getActivity(), userid);
}
@Override
@JavascriptInterface
public void toSupplier(String sid) {
// TODO Auto-generated method stub
// BigDecimal db = new BigDecimal(sid);
// LogUtils.i(TAG, "toSupplier,sid="+sid +",BigDecimal"+
// db.toPlainString());
if (!NetworkProber.isNetworkAvailable(context)) {
UIUtils.showToastSafe("网络不可用");
return;
}
if ("".equals(sid)) {
Utils.toSupplier(getActivity());
} else {
sid = sid.replace("\"", "");
Utils.toSupplier(getActivity(), sid);
}
}
@Override
@JavascriptInterface
public void buyInSupplier(String sid, String pid) {
// TODO Auto-generated method stub
if (!NetworkProber.isNetworkAvailable(context)) {
UIUtils.showToastSafe("网络不可用");
return;
}
if ((MGWBaseActivity) getActivity() != null) {
((MGWBaseActivity) getActivity()).beepManager.playBeepSoundAndVibrate();
}
LogUtils.i(TAG, "buyInSupplier,sid=" + sid + ",pid=" + pid);
Utils.buyInSupplier(getActivity(), sid, pid);
}
@JavascriptInterface
public void toScan() {
// TODO Auto-generated method stub
LogUtils.i(TAG, "toScan");
UIUtils.runInMainThread(new Runnable() {
@Override
public void run() {
if ((MGWBaseActivity) getActivity() != null) {
((MGWBaseActivity) getActivity()).beepManager.playBeepSoundAndVibrate();
}
startActivityForResult(new Intent(getActivity(), CaptureActivity.class), 1);
}
});
}
@JavascriptInterface
public void toAds(String dd) {
if (!NetworkProber.isNetworkAvailable(context)) {
UIUtils.showToastSafe("网络不可用");
return;
}
Utils.toAds(getActivity(), dd);
}
}
@Override
public boolean onBackPressed() {
// TODO Auto-generated method stub
return false;
}
@Override
public void initData() {
// TODO Auto-generated method stub
}
@Override
public void showTwoPage(WebView view, String url) {
// TODO Auto-generated method stub
}
@Override
public void hideErrorPage() {
// TODO Auto-generated method stub
}
@Override
public void open2OhterActivitye(Intent intent) {
// TODO Auto-generated method stub
}
@Override
protected void openWebview(WebView view, String url) {
// TODO Auto-generated method stub
}
private initZxingListener zxingListener;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
String str = data.getStringExtra(CaptureActivity.FORRESULT);
if (str != null) {
forResultZxing(str, context, mHandler);
}
}
}
/**
* 处理二维码扫返回
*
* @param str
*/
private void forResultZxing(String str, Context context, final Handler mHandler) {
if (str.equals("first")) {
} else if (str.equals("Second")) {
} else {
if (str.indexOf("http://m.mgw.cc") == -1) {
Toast.makeText(context, "二维码扫描失败,非美顾问专用二维码", Toast.LENGTH_LONG).show();
} else if (str.contains("guid=")) {
Intent intent = new Intent(context, SaomadengluActivity.class);
intent.putExtra("str", str);
context.startActivity(intent);
} else if (str.contains("addfriend=")) {
final String userid = str.substring(26, str.length());
if (BaseApplication.getApplication().getUserName().equals(userid)) {
context.startActivity(new Intent(context, AlertDialog.class).putExtra("msg", "不能添加自己"));
return;
}
if (BaseApplication.getApplication().getContactList().containsKey(userid)) {
context.startActivity(new Intent(context, AlertDialog.class).putExtra("msg", "此用户已是你的好友"));
return;
}
new Thread(new Runnable() {
@Override
public void run() {
try {
EMContactManager.getInstance().addContact(userid, "加个好友吧");
Message msg = new Message();
msg.what = 2;
mHandler.sendMessage(msg);
} catch (EaseMobException e) {
Message msg = new Message();
msg.what = 3;
mHandler.sendMessage(msg);
}
}
}).start();
} else {
try {
Define_C.s_shopingId = str.substring(20, str.indexOf("&oid"));
Define_C.s_old = str.substring(str.indexOf("&oid") + 5);
Message message = Message.obtain();
message.what = MESSAGE_TYPE_SHOPING_ID;
message.obj = null;
mHandler.sendMessage(message);
} catch (Exception ex) {
Toast.makeText(context, "访问服务器端失败,请重新扫码", Toast.LENGTH_LONG).show();
}
}
}
}
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_TYPE_SHOPING_ID:
// {
// "item": {
// "fmbid": "140819170100000003",
// "suppliername": "17.5经典院线",
// "supplierlogo":
// "http://app.mgw.cc/Member/Images/avatar-100.png",
// "discount": 0.3300,
// "backsafe": 0.1000,
// "oid": "140806170900000004"
// },
// "flag": 0,
// "msg": "挂单成功",
// "type": "user.getbill",
// "telephone": null
// }
ShowNote();
break;
case 2:
Toast.makeText(getActivity(), "好友添加请求发送成功!", Toast.LENGTH_SHORT).show();
break;
case 3:
Toast.makeText(getActivity(), "好友添加请求发送失败!", Toast.LENGTH_SHORT).show();
break;
case 4:
Toast.makeText(getActivity(), msg.obj.toString(), Toast.LENGTH_SHORT).show();
break;
}
}
};
void ShowNote() {
new Thread() {
@Override
public void run() {
try {
JSONObject t_JsonObject;
t_JsonObject = Http.postShoping(getActivity().getSharedPreferences("mgw_data", 0).getString("mgw_userID", null), Define_C.s_shopingId, Define_C.s_old);
double t_num;
double t_num2;
if (t_JsonObject == null) {
Toast.makeText(getActivity(), "网络异常,请重新扫码!", Toast.LENGTH_SHORT).show();
return;
}
if (t_JsonObject.getInt("flag") == 0) {// 成功
JSONArray t_JsonArray = t_JsonObject.getJSONArray("items");
t_JsonObject = t_JsonArray.getJSONObject(0);
// 140725114100000002,140818121000000000
Intent intent;
switch (t_JsonObject.getInt("fmbstatus")) {
case 0:
intent = new Intent(getActivity(), PayingActivity.class);
intent.putExtra("suppliername", t_JsonObject.getString("suppliername"));
t_num = Double.valueOf(t_JsonObject.getString("discount"));
t_num2 = CommonUtils.round((t_num), 1);
// 将折扣存在本地数据库中
// DiscountDao dao=new
// DiscountDao(CameraTestActivity.this);
// dao.save(t_JsonObject.getString("123456789"),
// String.valueOf(t_num2));
Define_C.s_discount = String.valueOf(t_num2);
Define_C.s_shopingName = t_JsonObject.getString("suppliername");
intent.putExtra("discount", String.valueOf(t_num2) + "折");
t_num = Double.valueOf(t_JsonObject.getString("backsafe"));
intent.putExtra("backsafe", String.valueOf((int) (t_num * 100)) + "%");
Define_C.s_return_money = String.valueOf((int) (t_num * 100)) + "%";
intent.putExtra("ShopingId", Define_C.s_shopingId);
Define_C.s_orderId = t_JsonObject.getString("fmbid");
startActivity(intent);
break;
case 1:
t_num = Double.valueOf(t_JsonObject.getString("discount"));
t_num2 = CommonUtils.round((t_num), 1);
// 将折扣存在本地数据库中
// DiscountDao dao=new
// DiscountDao(CameraTestActivity.this);
// dao.save(t_JsonObject.getString("123456789"),
// String.valueOf(t_num2));
Define_C.s_discount = String.valueOf(t_num2);
t_num = Double.valueOf(t_JsonObject.getString("backsafe"));
Define_C.s_shopingName = t_JsonObject.getString("suppliername");
Define_C.s_return_money = String.valueOf((int) (t_num * 100)) + "%";
Define_C.s_orderId = t_JsonObject.getString("fmbid");
if (t_JsonObject.getInt("fmbpayment") == 2) {
intent = new Intent(getActivity(), OrderFinishActivity.class);
Define_C.s_orderId = t_JsonObject.getString("fmbid");
intent.putExtra("fmbid", Define_C.s_orderId);
intent.putExtra("type", (byte) 1);
startActivity(intent);
return;
}
intent = new Intent(getActivity(), PayTypeActivity.class);
intent.putExtra("OrderId", t_JsonObject.getString("fmbid"));
startActivity(intent);
break;
// case 2:
default:
t_num = Double.valueOf(t_JsonObject.getString("discount"));
t_num2 = CommonUtils.round((t_num), 1);
// 将折扣存在本地数据库中
// DiscountDao dao=new
// DiscountDao(CameraTestActivity.this);
// dao.save(t_JsonObject.getString("123456789"),
// String.valueOf(t_num2));
Define_C.s_discount = String.valueOf(t_num2);
t_num = Double.valueOf(t_JsonObject.getString("backsafe"));
Define_C.s_shopingName = t_JsonObject.getString("suppliername");
Define_C.s_return_money = String.valueOf((int) (t_num * 100)) + "%";
intent = new Intent(getActivity(), OrderFinishActivity.class);
Define_C.s_orderId = t_JsonObject.getString("fmbid");
switch (t_JsonObject.getInt("fmbpayment")) {
case 1:
intent.putExtra("type", (byte) 0);
break;
case 2:
intent.putExtra("type", (byte) 1);
break;
}
startActivity(intent);
break;
}
} else {
Message message = Message.obtain();
message.what = 4;
message.obj = t_JsonObject.getString("msg");
mHandler.sendMessage(message);
Toast.makeText(getActivity(), t_JsonObject.getString("msg"), Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
public class MyWebViewClient_Base extends BaseWebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
// view.loadUrl("javascript:window.handler.show(document.body.innerHTML);");
// 通过内部类定义的方法获取html页面加载的内容,这个需要添加在webview加载完成后的回调中
view.loadUrl("javascript:window.mgwjs.showSource('<head>'+" + "document.getElementsByTagName('html')[0].innerHTML+'</head>');");
super.onPageFinished(view, url);
// dismissLoadingDialog();
dismissLoadingDialog();
LogUtils.i("onPageFinished=" + "url=" + url);
MainActivity.mainActivity.findViewById(R.id.rl_error).setVisibility(View.INVISIBLE);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (!NetworkProber.isNetworkAvailable(context)) {
UIUtils.showToastSafe("网络不可用");
view.stopLoading();
return;
}
if ((MGWBaseActivity) getActivity() != null) {
((MGWBaseActivity) getActivity()).beepManager.playBeepSoundAndVibrate();
}
currentUrl = url;
if (url.contains("goto:login")) {
if (mShowExit)
return;
mShowExit = true;
{
BaseApplication.getApplication().logout(context);
mShowExit = false;
}
return;
}
showLoadingDialog(getActivity(), HomeFragment.class);
return;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
if (!NetworkProber.isNetworkAvailable(context)) {
UIUtils.showToastSafe("网络不可用");
view.stopLoading();
return true;
} else {
view.loadUrl(url);
}
return true;
}
}
public class MyWebChromeClient_Base extends BaseWebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {
currentLoadProgress = newProgress;
if (newProgress > 49) {
}
LogUtils.i(TAG + "home_onProgressChanged=newProgres=" + newProgress);
}
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
// BusProvider.getInstance().register(this);
}
@Override
public void onPause() {
// TODO Auto-generated method stub
super.onPause();
// BusProvider.getInstance().unregister(this);
}
// @Produce
// public ReGetLoginInfoEvent getLoginInfohEvent() {
// LogUtils.i("otto" + "ReGetLoginInfoEvent=newProgres=");
// ReGetLoginInfoEvent mallFragmentNeedRefreshEvent = new
// ReGetLoginInfoEvent();
// return mallFragmentNeedRefreshEvent;
// }
}