package com.electric.chargingpile.activity; import android.Manifest; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.provider.Settings; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.util.Log; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.webkit.WebView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.blankj.utilcode.util.EmptyUtils; import com.blankj.utilcode.util.LogUtils; import com.electric.chargingpile.R; import com.electric.chargingpile.adapter.BaseRecyclerAdapter; import com.electric.chargingpile.adapter.FindAdapter; import com.electric.chargingpile.application.MainApplication; import com.electric.chargingpile.data.Adin; import com.electric.chargingpile.data.ChargingShareBean; import com.electric.chargingpile.data.FindData; import com.electric.chargingpile.manager.ProfileManager; import com.electric.chargingpile.util.BarColorUtil; import com.electric.chargingpile.util.DES3; import com.electric.chargingpile.util.ImageTools; import com.electric.chargingpile.util.JsonUtils; import com.electric.chargingpile.util.OkHttpUtil; import com.electric.chargingpile.util.ToastUtil; import com.electric.chargingpile.view.GridDividerItemDecoration; import com.electric.chargingpile.view.SlideFindView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import com.umeng.analytics.MobclickAgent; import com.zhy.http.okhttp.OkHttpUtils; import com.zhy.http.okhttp.callback.StringCallback; import org.json.JSONArray; import org.zackratos.ultimatebar.UltimateBar; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import cn.sharesdk.framework.Platform; import cn.sharesdk.framework.PlatformActionListener; import cn.sharesdk.framework.ShareSDK; import cn.sharesdk.tencent.qq.QQ; import cn.sharesdk.wechat.friends.Wechat; import cn.sharesdk.wechat.moments.WechatMoments; import okhttp3.Call; import pub.devrel.easypermissions.AfterPermissionGranted; import pub.devrel.easypermissions.AppSettingsDialog; import pub.devrel.easypermissions.EasyPermissions; import top.zibin.luban.Luban; import top.zibin.luban.OnCompressListener; public class FindActivity extends AppCompatActivity implements View.OnClickListener, EasyPermissions.PermissionCallbacks { private static final String TAG = "FindActivity"; private FindAdapter findAdapter; private RecyclerView rvFind; private IntentFilter intentFilter; private NetworkChangeReceiver networkChangeReceiver; private RelativeLayout ll_center, ll_claim, ll_build, ll_add, ll_edaijia, ll_weizhang, ll_yuyue, ll_shop, ll_toutiao, rl_jisuan, ll_planroute, rl_help; private LinearLayout ll_tab_our, ll_tab_index, ll_tab_screening, tab_qa; private long exitTime = 0; private ImageView iv_our, iv_find, iv_main, iv_screening; private SlideFindView sfv; private Context context; public static String current_url = ""; public static boolean haveFindMessage = false; private TextView tv_find, tv_msg_num; private UltimateBar ultimateBar; private ImageView mIvMarkerBg, ivPoint; private TextView mTvMarkerViewNum; private View mMarkerView; private ProgressDialog loadingDialog; private boolean isRefresh = false; private static final int RC_CAMERA_PERM = 123; private List list = new ArrayList<>(); private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 2: try { JSONArray jsonArray = new JSONArray(msg.obj.toString()); String data = jsonArray.toString(); ArrayList list = new ArrayList(); if (!data.equals("")) { Gson g = new Gson(); List l = g.fromJson(data, new TypeToken>() { }.getType()); if (l != null && l.size() > 0) { list.addAll(l); } sfv.initData(list); } } catch (Exception e) { e.printStackTrace(); } break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_find); intentFilter = new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); networkChangeReceiver = new NetworkChangeReceiver(); registerReceiver(networkChangeReceiver, intentFilter); BarColorUtil.initStatusBarColor(FindActivity.this); initViews(); initDatas(); } private void initViews() { loadingDialog = new ProgressDialog(this); loadingDialog.setMessage("图片解析中..."); loadingDialog.setCanceledOnTouchOutside(false); ll_tab_index = (LinearLayout) findViewById(R.id.ll_tab_index); ll_tab_index.setOnClickListener(this); ll_tab_our = (LinearLayout) findViewById(R.id.ll_tab_our); ll_tab_our.setOnClickListener(this); ll_tab_screening = (LinearLayout) findViewById(R.id.tab_screening); ll_tab_screening.setOnClickListener(this); rl_jisuan = (RelativeLayout) findViewById(R.id.rl_jisuan); rl_jisuan.setOnClickListener(this); tv_msg_num = (TextView) findViewById(R.id.tv_msg_num); ll_build = (RelativeLayout) findViewById(R.id.ll_build); ll_build.setOnClickListener(this); ll_add = (RelativeLayout) findViewById(R.id.ll_add); ll_add.setOnClickListener(this); ll_claim = (RelativeLayout) findViewById(R.id.ll_claim); ll_claim.setOnClickListener(this); ll_edaijia = (RelativeLayout) findViewById(R.id.ll_edaijia); ll_edaijia.setOnClickListener(this); ll_weizhang = (RelativeLayout) findViewById(R.id.ll_weizhang); ll_weizhang.setOnClickListener(this); ll_yuyue = (RelativeLayout) findViewById(R.id.ll_yuyue); ll_yuyue.setOnClickListener(this); ll_shop = (RelativeLayout) findViewById(R.id.ll_shop); ll_shop.setOnClickListener(this); ll_planroute = (RelativeLayout) findViewById(R.id.ll_planroute); ll_planroute.setOnClickListener(this); ll_center = (RelativeLayout) findViewById(R.id.ll_center); ll_center.setOnClickListener(this); tab_qa = (LinearLayout) findViewById(R.id.tab_qa); tab_qa.setOnClickListener(this); ivPoint = (ImageView) findViewById(R.id.iv_point); rl_help = (RelativeLayout) findViewById(R.id.rl_help); rl_help.setOnClickListener(this); sfv = (SlideFindView) findViewById(R.id.ll_ad); iv_our = (ImageView) findViewById(R.id.iv_our); iv_find = (ImageView) findViewById(R.id.iv_find); iv_main = (ImageView) findViewById(R.id.iv_main); iv_screening = (ImageView) findViewById(R.id.iv_screening); tv_find = (TextView) findViewById(R.id.tv_find); mMarkerView = LayoutInflater.from(this).inflate(R.layout.view_tab_count, null); mMarkerView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT)); mTvMarkerViewNum = (TextView) mMarkerView.findViewById(R.id.tv_num); mIvMarkerBg = (ImageView) mMarkerView.findViewById(R.id.iv_icon); rvFind = (RecyclerView) findViewById(R.id.rv_find); } private void initDatas() { getFindNews(); } private void initRecyclerView(final List rvList) { findAdapter = new FindAdapter(FindActivity.this, rvList); rvFind.setLayoutManager(new GridLayoutManager(FindActivity.this, 3)); rvFind.setHasFixedSize(false); rvFind.setNestedScrollingEnabled(false); rvFind.addItemDecoration(new GridDividerItemDecoration(FindActivity.this, 3)); rvFind.setAdapter(findAdapter); findAdapter.setOnItemClickListener(new BaseRecyclerAdapter.OnItemClickListener() { @Override public void onItemClick(View itemView, int pos) { FindData findData = rvList.get(pos); dealSkipData(findData); } }); list.clear(); list.addAll(rvList); LogUtils.e("初始化或刷新了rv"); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.rl_help: MobclickAgent.onEvent(getApplicationContext(), "0604"); Intent intent_help = new Intent(getApplication(), MyWebViewActivity.class); intent_help.putExtra("url", "http://evcharge.cc/cdz/newcharge-help.html"); startActivity(intent_help); break; case R.id.ll_center: Intent intent9 = new Intent(getApplication(), MyWebViewActivity.class); intent9.putExtra("url", "http://cdz.evcharge.cc/zhannew/basic/web/index.php/zhanhuodong/activitycenter"); startActivity(intent9); MobclickAgent.onEvent(getApplicationContext(), "0708"); break; case R.id.ll_tab_index: Intent ii = new Intent(getApplication(), MainMapActivity.class); ii.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(ii); MobclickAgent.onEvent(getApplicationContext(), "0118"); overridePendingTransition(0, 0); break; case R.id.tab_qa: MobclickAgent.onEvent(getApplicationContext(), "0999"); Intent i = new Intent(getApplication(), ChatActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(i); overridePendingTransition(0, 0); break; case R.id.ll_tab_our: MobclickAgent.onEvent(getApplicationContext(), "0106"); Intent intent1 = new Intent(getApplication(), UserCenterActivity.class); intent1.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(intent1); overridePendingTransition(0, 0); break; case R.id.tab_screening: if (!MainApplication.isLogin()) { startActivity(new Intent(getApplication(), LoginActivity.class)); } else if (!cameraTask()) { EasyPermissions.requestPermissions( this, "该功能需要开启摄像头权限,是否前往开启?", RC_CAMERA_PERM, Manifest.permission.CAMERA); } else { Intent iintent = new Intent(getApplicationContext(), com.google.zxing.client.android.CaptureActivity.class); iintent.putExtra("url", MainApplication.url); iintent.putExtra("user_id", MainApplication.userId); iintent.putExtra("user_password", MainApplication.userPassword); iintent.putExtra("user_phone", MainApplication.userPhone); iintent.putExtra("cha", MainMapActivity.cha); iintent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(iintent); overridePendingTransition(0, 0); MobclickAgent.onEvent(getApplicationContext(), "0104"); } break; case R.id.ll_planroute: startActivity(new Intent(getApplication(), RoutePlanShowAddressActivity.class)); MobclickAgent.onEvent(getApplicationContext(), "0705"); break; case R.id.ll_add: if (!MainApplication.isLogin()) { Toast.makeText(getApplication(), "请先登录", Toast.LENGTH_SHORT).show(); startActivity(new Intent(getApplication(), LoginActivity.class)); } else { startActivity(new Intent(getApplication(), ShareTwoActivity.class)); MobclickAgent.onEvent(getApplicationContext(), "0709"); } break; case R.id.ll_build: if (!MainApplication.isLogin()) { Toast.makeText(getApplication(), "请先登录", Toast.LENGTH_SHORT).show(); startActivity(new Intent(getApplication(), LoginActivity.class)); } else { startActivity(new Intent(getApplication(), BuildTypeActivity.class)); MobclickAgent.onEvent(getApplicationContext(), "0008"); } break; case R.id.ll_claim: Intent intent145 = new Intent(getApplication(), MyWebViewActivity.class); String web23 = null; try { web23 = "http://cdz.evcharge.cc/zhannew/basic/web/index.php/group/index"; } catch (Exception e) { e.printStackTrace(); } intent145.putExtra("url", web23); startActivity(intent145); break; case R.id.rl_jisuan: if (!MainApplication.isLogin()) { startActivity(new Intent(getApplicationContext(), LoginActivity.class)); } else { Intent intentt = new Intent(getApplication(), MyWebViewActivity.class); String s = null; try { s = "https://evcharge.cc/node/pcalc/pre-pcalc?tel=" + MainApplication.userPhone + "&user_id=" + MainApplication.userId; } catch (Exception e) { e.printStackTrace(); } intentt.putExtra("url", s); startActivity(intentt); MobclickAgent.onEvent(getApplicationContext(), "0040"); } break; case R.id.ll_edaijia: Intent intent2 = new Intent(getApplication(), MyWebViewActivity.class); String web = ""; if (!MainApplication.isLogin()) { web = "http://evcharge.cc/cdz/e-driver.html"; } else { web = "http://evcharge.cc/cdz/e-driver.html#%7Bphone%3A" + MainApplication.userPhone + "%7D"; } intent2.putExtra("url", web); startActivity(intent2); MobclickAgent.onEvent(getApplicationContext(), "0013"); break; case R.id.ll_shop: long appTime11 = System.currentTimeMillis() / 1000; Log.i("appTime(long)---", appTime11 + ""); long updatetime1 = appTime11 - MainMapActivity.cha - 5; Log.i("updatetime(long)---", updatetime1 + ""); Log.i("cha---", MainMapActivity.cha + ""); String token1 = String.valueOf(updatetime1); String encode_token = null; try { encode_token = DES3.encode(token1); } catch (Exception e) { e.printStackTrace(); } String replace = URLEncoder.encode(encode_token); Intent intent11 = new Intent(); intent11.setClass(FindActivity.this, CreditActivity.class); intent11.putExtra("navColor", "#fcfcfc"); //配置导航条的背景颜色,请用#ffffff长格式。 intent11.putExtra("titleColor", "#222222"); //配置导航条标题的颜色,请用#ffffff长格式。 MainApplication.goods_type = "shop"; if (!MainApplication.isLogin()) { intent11.putExtra("url", "http://cdz.evcharge.cc/zhannew/basic/web/index.php/duiba/active?token=" + replace); //配置自动登陆地址,每次需服务端动态生成。 } else { intent11.putExtra("url", "http://cdz.evcharge.cc/zhannew/basic/web/index.php/duiba/active?user_id=" + MainApplication.userId + "&token=" + replace); //配置自动登陆地址,每次需服务端动态生成。 } startActivity(intent11); CreditActivity.creditsListener = new CreditActivity.CreditsListener() { /** * 当点击分享按钮被点击 * @param shareUrl 分享的地址 * @param shareThumbnail 分享的缩略图 * @param shareTitle 分享的标题 * @param shareSubtitle 分享的副标题 */ public void onShareClick(WebView webView, String shareUrl, String shareThumbnail, String shareTitle, String shareSubtitle) { ChargingShareBean chargingShareBean = new ChargingShareBean(); chargingShareBean.setIcon(shareThumbnail); chargingShareBean.setTitle(shareTitle); chargingShareBean.setUrl(shareUrl); chargingShareBean.setText(""); showSimpleBottomSheetGrid(chargingShareBean); } /** * 当点击“请先登录”按钮唤起登录时,会调用此处代码。 * 用户登录后,需要将CreditsActivity.IS_WAKEUP_LOGIN变量设置为true。 * @param webView 用于登录成功后返回到当前的webview刷新登录状态。 * @param currentUrl 当前页面的url */ public void onLoginClick(WebView webView, final String currentUrl) { //当未登录的用户点击去登录时,会调用此处代码。 //用户登录后,需要将CreditsActivity.IS_WAKEUP_LOGIN变量设置为true。 //为了用户登录后能回到未登录前的页面(currentUrl)。 //当用户登录成功后,需要重新请求一次服务端,带上currentUrl。 //用该方法中的webview变量加载请求链接。 //服务端收到请求后在生成免登录url时,将currentUrl放入redirect参数,通知客户端302跳转到新生成的免登录URL。 new AlertDialog.Builder(webView.getContext()) .setTitle("跳转登录") .setMessage("跳转到登录页面?") .setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { MainApplication.current_url = currentUrl; startActivity(new Intent(getApplicationContext(), LoginActivity.class)); } }) .setNegativeButton("否", null) .show(); } /** * 当点击“复制”按钮时,触发该方法,回调获取到券码code * @param webView webview对象。 * @param code 复制的券码 */ public void onCopyCode(WebView webView, String code) { //当未登录的用户点击去登录时,会调用此处代码。 new AlertDialog.Builder(webView.getContext()) .setTitle("复制券码") .setMessage("已复制,券码为:" + code) .setPositiveButton("是", null) .setNegativeButton("否", null) .show(); } /** * 积分商城返回首页刷新积分时,触发该方法。 */ public void onLocalRefresh(WebView mWebView, String credits) { //String credits为积分商城返回的最新积分,不保证准确。 //触发更新本地积分,这里建议用ajax向自己服务器请求积分值,比较准确。 // Toast.makeText(getApplicationContext(), "触发本地刷新积分:"+credits,Toast.LENGTH_SHORT).show(); } }; MobclickAgent.onEvent(getApplicationContext(), "0706"); // } break; case R.id.ll_weizhang: if (!MainApplication.isLogin()) { Toast.makeText(getApplication(), "请先登录", Toast.LENGTH_SHORT).show(); startActivity(new Intent(getApplication(), LoginActivity.class)); } else { long appTime1 = System.currentTimeMillis() / 1000; long updatetime = appTime1 - MainMapActivity.cha - 1; String token = null; try { token = URLEncoder.encode(DES3.encode(String.valueOf(updatetime))); } catch (Exception e) { e.printStackTrace(); } Intent intent3 = new Intent(getApplication(), MyWebViewActivity.class); intent3.putExtra("url", MainApplication.url + "/zhannew/basic/web/index.php/zhancar/car?user_id=" + MainApplication.userId + "&tel=" + MainApplication.userPhone + "&token=" + token); startActivity(intent3); MobclickAgent.onEvent(getApplicationContext(), "0710"); } break; case R.id.ll_yuyue: Intent intent4 = new Intent(getApplication(), MyWebViewActivity.class); String web1 = null; try { web1 = "https://m.d1ev.com/?from=cdz"; } catch (Exception e) { e.printStackTrace(); } intent4.putExtra("url", web1); startActivity(intent4); MobclickAgent.onEvent(getApplicationContext(), "0711"); break; } } @Override protected void onPause() { super.onPause(); MobclickAgent.onPause(this); } @Override protected void onResume() { super.onResume(); getRecyclerViewData(); if (MainMapActivity.total_unread > 0) { tv_msg_num.setVisibility(View.VISIBLE); tv_msg_num.setText(MainMapActivity.total_unread + ""); } else { tv_msg_num.setVisibility(View.GONE); } isRefresh = false; MobclickAgent.onResume(this); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { if (MainMapActivity.mainMapActivity != null) { MainMapActivity.mainMapActivity.finish(); } SharedPreferences mySharedPreferences = getSharedPreferences("showdialog", Activity.MODE_PRIVATE); SharedPreferences.Editor editor1 = mySharedPreferences.edit(); editor1.clear(); ProfileManager.getInstance().setSearchAddress(this, ""); android.os.Process.killProcess(android.os.Process.myPid()); } return true; } return super.onKeyDown(keyCode, event); } private void getFindNews() { new Thread(new Runnable() { @Override public void run() { Request request = new Request.Builder().url(MainApplication.url + "/zhannew/basic/web/index.php/adin/getfx").build(); Response response = null; try { response = OkHttpUtil.execute(request); if (response.code() == 200) { String json = ""; try { json = response.body().string(); Message msg = new Message(); msg.obj = json; msg.what = 2; handler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); Message msg = new Message(); msg.what = 3; handler.sendMessage(msg); } } } catch (Exception e) { e.printStackTrace(); Message msg = new Message(); msg.what = 3; handler.sendMessage(msg); } } }).start(); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } private boolean hasCameraPermission() { return EasyPermissions.hasPermissions(this, Manifest.permission.CAMERA); } @AfterPermissionGranted(RC_CAMERA_PERM) public boolean cameraTask() { if (hasCameraPermission()) { return true; } else { return false; } } @Override public void onPermissionsGranted(int requestCode, List perms) { LogUtils.e("wwwwwww"); Intent iintent = new Intent(getApplicationContext(), com.google.zxing.client.android.CaptureActivity.class); iintent.putExtra("url", MainApplication.url); iintent.putExtra("user_id", MainApplication.userId); iintent.putExtra("user_password", MainApplication.userPassword); iintent.putExtra("user_phone", ProfileManager.getInstance().getUsername(getApplicationContext())); iintent.putExtra("cha", MainMapActivity.cha); iintent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); startActivity(iintent); overridePendingTransition(0, 0); } @Override public void onPermissionsDenied(int requestCode, List perms) { if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) { new AppSettingsDialog.Builder(FindActivity.this).build().show(); } } class NetworkChangeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (null != networkInfo && networkInfo.isAvailable()) { } else { Toast.makeText(context, "当前网络不可用", Toast.LENGTH_SHORT).show(); } } } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(networkChangeReceiver); } public static void showInstalledAppDetails(Context context, String packageName) { Intent intent = new Intent(); final int apiLevel = Build.VERSION.SDK_INT; if (apiLevel >= 9) { // 2.3(ApiLevel 9)以上,使用SDK提供的接口 intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", packageName, null); intent.setData(uri); } else { // 2.3以下,使用非公开的接口(查看InstalledAppDetails源码) // 2.2和2.1中,InstalledAppDetails使用的APP_PKG_NAME不同。 final String appPkgName = (apiLevel == 8 ? "pkg" : "com.android.settings.ApplicationPkgName"); intent.setAction(Intent.ACTION_VIEW); intent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails"); intent.putExtra(appPkgName, packageName); } context.startActivity(intent); } private Bitmap getMarkerBmp(int num) { mIvMarkerBg.setImageResource(R.drawable.tab_our_selected_h1); if (num > 10) { mTvMarkerViewNum.setText(Integer.toString(num)); } else { mTvMarkerViewNum.setText(Integer.toString(num)); } Bitmap bmp = getBitmapFromView(mMarkerView); return bmp; } public static Bitmap getBitmapFromView(View view) { view.destroyDrawingCache(); view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec .makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.setDrawingCacheEnabled(true); Bitmap tmp = view.getDrawingCache(); Bitmap bitmap = tmp.copy(Bitmap.Config.ARGB_8888, false); tmp.recycle(); return bitmap; } private void showSimpleBottomSheetGrid(final ChargingShareBean chargingShareBean) { final int TAG_SHARE_WECHAT_FRIEND = 0; final int TAG_SHARE_WECHAT_MOMENT = 1; final int TAG_SHARE_QQ = 2; QMUIBottomSheet.BottomGridSheetBuilder builder = new QMUIBottomSheet.BottomGridSheetBuilder(FindActivity.this); QMUIBottomSheet build = builder.addItem(R.drawable.icon_share_wechat, "微信", TAG_SHARE_WECHAT_FRIEND, QMUIBottomSheet.BottomGridSheetBuilder.FIRST_LINE) .addItem(R.drawable.icon_share_wechatquan, "朋友圈", TAG_SHARE_WECHAT_MOMENT, QMUIBottomSheet.BottomGridSheetBuilder.FIRST_LINE) .addItem(R.drawable.icon_share_qq, "QQ", TAG_SHARE_QQ, QMUIBottomSheet.BottomGridSheetBuilder.FIRST_LINE) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomGridSheetBuilder.OnSheetItemClickListener() { @Override public void onClick(QMUIBottomSheet dialog, View itemView) { dialog.dismiss(); int tag = (int) itemView.getTag(); switch (tag) { case TAG_SHARE_WECHAT_FRIEND: share(Wechat.NAME, chargingShareBean); break; case TAG_SHARE_WECHAT_MOMENT: share(WechatMoments.NAME, chargingShareBean); break; case TAG_SHARE_QQ: share(QQ.NAME, chargingShareBean); break; } } }).build(); // build. build.show(); } private void share(final String name, ChargingShareBean chargingShareBean) { Platform.ShareParams paramsToShare = new Platform.ShareParams(); paramsToShare.setText(chargingShareBean.getText()); paramsToShare.setTitle(chargingShareBean.getTitle()); paramsToShare.setTitleUrl(chargingShareBean.getUrl()); paramsToShare.setUrl(chargingShareBean.getUrl()); paramsToShare.setImageUrl(chargingShareBean.getIcon()); paramsToShare.setShareType(Platform.SHARE_WEBPAGE); Platform platform = ShareSDK.getPlatform(name); platform.setPlatformActionListener(new PlatformActionListener() { @Override public void onComplete(Platform platform, int i, HashMap hashMap) { if (MainApplication.isLogin()) { getShareIntegral(); } } @Override public void onError(Platform platform, int i, Throwable throwable) { LogUtils.e(throwable.getMessage()); } @Override public void onCancel(Platform platform, int i) { } }); platform.share(paramsToShare); } private void getShareIntegral() { String url = MainApplication.url + "/zhannew/basic/web/index.php/member/insert-task?userid=" + MainApplication.userId; OkHttpUtils.get().url(url).build().execute(new StringCallback() { @Override public void onError(Call call, Exception e) { } @Override public void onResponse(String response) { Log.e(TAG, "onResponse: getShareIntegral=" + response); String rtnCode = JsonUtils.getKeyResult(response, "rtnCode"); if (rtnCode.equals("01")) { } } }); } @Override protected void onActivityResult(int requestCode, int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (data != null) { if (requestCode == 1) { //处理调用系统图库 } } } } public static String getJson(Context mContext, String fileName) { // TODO Auto-generated method stub StringBuilder sb = new StringBuilder(); AssetManager am = mContext.getAssets(); try { BufferedReader br = new BufferedReader(new InputStreamReader( am.open(fileName))); String next = ""; while (null != (next = br.readLine())) { sb.append(next); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); sb.delete(0, sb.length()); } return sb.toString().trim(); } private void getRecyclerViewData() { String findDate = ProfileManager.getInstance().getFindDate(FindActivity.this); if (EmptyUtils.isEmpty(findDate)) { findDate = String.valueOf(System.currentTimeMillis() / 1000); ProfileManager.getInstance().setFindDate(FindActivity.this, findDate); } String url = MainApplication.url + "/zhannew/basic/web/index.php/discovery/menu-list"; OkHttpUtils.get().url(url).addParams("timer", findDate).build().execute(new StringCallback() { @Override public void onError(Call call, Exception e) { } @Override public void onResponse(String response) { LogUtils.e(response); if (EmptyUtils.isNotEmpty(response)) { String rtnCode = JsonUtils.getKeyResult(response, "rtnCode"); if ("01".equals(rtnCode)) { String data = JsonUtils.getKeyResult(response, "data"); List nowList = JsonUtils.parseToObjectList(data, FindData.class); if (nowList.size() > 0) { LogUtils.e(isSameList(nowList)); if (isSameList(nowList) == false || isRefresh) { initRecyclerView(nowList); } } for (FindData findData : list) { if (findData.getUnread().equals("0")) { ivPoint.setVisibility(View.VISIBLE); haveFindMessage = true; return; } } ivPoint.setVisibility(View.GONE); haveFindMessage = false; LogUtils.e("123456"); } } } }); } private void dealSkipData(FindData findData) { if ("1".equals(findData.getIsLogin())) { if (MainApplication.isLogin()) { if ("1".equals(findData.getIsProto())) { skipNativeActivity(findData.getUrl()); } else { if (findData.getUnread().equals("0")) { String findDate = String.valueOf(System.currentTimeMillis() / 1000); ProfileManager.getInstance().setFindDate(FindActivity.this, findDate); } isRefresh = true; skipWebView(findData); } } else { ToastUtil.showToast(getApplicationContext(), "请先登录", Toast.LENGTH_SHORT); startActivity(new Intent(FindActivity.this, LoginActivity.class)); } } else { if ("1".equals(findData.getIsProto())) { skipNativeActivity(findData.getUrl()); } else { if (findData.getUnread().equals("0")) { String findDate = String.valueOf(System.currentTimeMillis() / 1000); ProfileManager.getInstance().setFindDate(FindActivity.this, findDate); } isRefresh = true; skipWebView(findData); } } } private void skipNativeActivity(String url) { switch (url) { case "find_routePlanning": startActivity(new Intent(getApplication(), RoutePlanShowAddressActivity.class)); MobclickAgent.onEvent(getApplicationContext(), "0705"); break; case "find_addChargestation": startActivity(new Intent(getApplication(), ShareTwoActivity.class)); MobclickAgent.onEvent(getApplicationContext(), "0709"); break; case "find_carowerStore": skipShop(); MobclickAgent.onEvent(getApplicationContext(), "0706"); break; default: break; } } private void skipWebView(FindData findData) { if (findData!=null && "获得红包".equals(findData.getName())){ MobclickAgent.onEvent(getApplicationContext(), "1125"); } Uri.Builder builder = Uri.parse(findData.getUrl()).buildUpon(); builder.appendQueryParameter("user_id", MainApplication.userId); builder.appendQueryParameter("tel", MainApplication.userPhone); builder.appendQueryParameter("token", MainApplication.userId); LogUtils.e(builder.toString()); Intent intent = new Intent(getApplicationContext(), MyWebViewActivity.class); intent.putExtra("url", findData.getUrl()); startActivity(intent); Map map = new HashMap<>(); map.put("type", findData.getName()); MobclickAgent.onEvent(getApplicationContext(), "0713", map); } private void skipShop() { long appTime11 = System.currentTimeMillis() / 1000; long updatetime1 = appTime11 - MainMapActivity.cha - 5; String token1 = String.valueOf(updatetime1); String encode_token = null; try { encode_token = DES3.encode(token1); } catch (Exception e) { e.printStackTrace(); } String replace = URLEncoder.encode(encode_token); Intent intent11 = new Intent(); intent11.setClass(FindActivity.this, CreditActivity.class); intent11.putExtra("navColor", "#fcfcfc"); //配置导航条的背景颜色,请用#ffffff长格式。 intent11.putExtra("titleColor", "#222222"); //配置导航条标题的颜色,请用#ffffff长格式。 MainApplication.goods_type = "shop"; if (!MainApplication.isLogin()) { intent11.putExtra("url", "http://cdz.evcharge.cc/zhannew/basic/web/index.php/duiba/active?token=" + replace); //配置自动登陆地址,每次需服务端动态生成。 } else { intent11.putExtra("url", "http://cdz.evcharge.cc/zhannew/basic/web/index.php/duiba/active?user_id=" + MainApplication.userId + "&token=" + replace); //配置自动登陆地址,每次需服务端动态生成。 } startActivity(intent11); CreditActivity.creditsListener = new CreditActivity.CreditsListener() { /** * 当点击分享按钮被点击 * @param shareUrl 分享的地址 * @param shareThumbnail 分享的缩略图 * @param shareTitle 分享的标题 * @param shareSubtitle 分享的副标题 */ public void onShareClick(WebView webView, String shareUrl, String shareThumbnail, String shareTitle, String shareSubtitle) { //当分享按钮被点击时,会调用此处代码。在这里处理分享的业务逻辑。 ChargingShareBean chargingShareBean = new ChargingShareBean(); chargingShareBean.setIcon(shareThumbnail); chargingShareBean.setTitle(shareTitle); chargingShareBean.setUrl(shareUrl); chargingShareBean.setText(""); showSimpleBottomSheetGrid(chargingShareBean); } /** * 当点击“请先登录”按钮唤起登录时,会调用此处代码。 * 用户登录后,需要将CreditsActivity.IS_WAKEUP_LOGIN变量设置为true。 * @param webView 用于登录成功后返回到当前的webview刷新登录状态。 * @param currentUrl 当前页面的url */ public void onLoginClick(WebView webView, final String currentUrl) { //当未登录的用户点击去登录时,会调用此处代码。 //用户登录后,需要将CreditsActivity.IS_WAKEUP_LOGIN变量设置为true。 //为了用户登录后能回到未登录前的页面(currentUrl)。 //当用户登录成功后,需要重新请求一次服务端,带上currentUrl。 //用该方法中的webview变量加载请求链接。 //服务端收到请求后在生成免登录url时,将currentUrl放入redirect参数,通知客户端302跳转到新生成的免登录URL。 new AlertDialog.Builder(webView.getContext()) .setTitle("跳转登录") .setMessage("跳转到登录页面?") .setPositiveButton("是", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { MainApplication.current_url = currentUrl; startActivity(new Intent(getApplicationContext(), LoginActivity.class)); } }) .setNegativeButton("否", null) .show(); } /** * 当点击“复制”按钮时,触发该方法,回调获取到券码code * @param webView webview对象。 * @param code 复制的券码 */ @Override public void onCopyCode(WebView webView, String code) { //当未登录的用户点击去登录时,会调用此处代码。 new AlertDialog.Builder(webView.getContext()) .setTitle("复制券码") .setMessage("已复制,券码为:" + code) .setPositiveButton("是", null) .setNegativeButton("否", null) .show(); } /** * 积分商城返回首页刷新积分时,触发该方法。 */ public void onLocalRefresh(WebView mWebView, String credits) { } }; } private boolean isSameList(List findList) { if (list.size() == 0) { return false; } for (int i = 0; i < findList.size(); i++) { if (!list.get(i).equals(findList.get(i))) { return false; } } return true; } }