}
629 654
}

+ 83 - 0
app/src/main/java/com/electric/chargingpile/util/PhoneUtils.java

@ -0,0 +1,83 @@
1
package com.electric.chargingpile.util;
2

3
import android.content.Context;
4
import android.content.pm.PackageInfo;
5
import android.content.pm.PackageManager;
6
import android.telephony.TelephonyManager;
7
import android.text.TextUtils;
8

9
import com.electric.chargingpile.manager.ProfileManager;
10

11
import java.security.SecureRandom;
12
import java.util.Random;
13

14
/**
15
 * Created by lenovo on 2016/10/28.
16
 */
17

18
public class PhoneUtils {
19

20
    /**
21
     * 获取App版本号
22
     *
23
     * @param context
24
     * @return
25
     */
26
    public static String getAppVersion(Context context) {
27
        if (context == null) return "";
28
        PackageManager mPackageManager = context.getPackageManager();
29
        try {
30
            PackageInfo info = mPackageManager.getPackageInfo(context.getPackageName(), 0);
31
            return info.versionName;
32
        } catch (Exception e) {
33
            return "Unknow";
34
        }
35
    }
36

37

38
    /**
39
     * 获取设备唯一标识 imei meid
40
     *
41
     * @return
42
     */
43
    public static final String getDeviceId() {
44
        String deviceId = ProfileManager.getInstance().getDeviceId();
45
        if ("".equals(deviceId)) {
46
            deviceId = ProfileManager.getInstance().getTempDeviceId();
47
        }
48
        return deviceId;
49
    }
50

51
    public static boolean isReadPhone = true;
52

53
    /**
54
     * 生成16位不重复的随机数,含数字+大小写
55
     */
56
    public static final String getGUID() {
57
        StringBuilder uid = new StringBuilder();
58
        //产生16位的强随机数
59
        Random rd = new SecureRandom();
60
        for (int i = 0; i < 16; i++) {
61
            //产生0-2的3位随机数
62
            int type = rd.nextInt(3);
63
            switch (type) {
64
                case 0:
65
                    //0-9的随机数
66
                    uid.append(rd.nextInt(10));
67
                    break;
68
                case 1:
69
                    //ASCII在65-90之间为大写,获取大写随机
70
                    uid.append((char) (rd.nextInt(25) + 65));
71
                    break;
72
                case 2:
73
                    //ASCII在97-122之间为小写,获取小写随机
74
                    uid.append((char) (rd.nextInt(25) + 97));
75
                    break;
76
                default:
77
                    break;
78
            }
79
        }
80
        return uid.toString();
81
    }
82

83
}

+ 105 - 0
app/src/main/java/com/electric/chargingpile/util/Util.java

@ -3,7 +3,10 @@ package com.electric.chargingpile.util;
3 3
import android.app.Activity;
4 4
import android.content.Context;
5 5
import android.graphics.Color;
6
import android.net.wifi.WifiInfo;
7
import android.net.wifi.WifiManager;
6 8
import android.os.Build;
9
import android.provider.Settings;
7 10
import android.support.v7.app.ActionBar;
8 11
import android.support.v7.app.AppCompatActivity;
9 12
import android.text.TextUtils;
@ -15,6 +18,7 @@ import com.amap.api.maps.AMap;
15 18
import com.amap.api.maps.model.CustomMapStyleOptions;
16 19
import com.blankj.utilcode.util.StringUtils;
17 20
import com.electric.chargingpile.activity.MainMapActivity;
21
import com.electric.chargingpile.application.MainApplication;
18 22
import com.electric.chargingpile.data.Zhan;
19 23
import com.electric.chargingpile.data.Zhuang;
20 24
import com.electric.chargingpile.manager.ProfileManager;
@ -23,12 +27,20 @@ import java.io.File;
23 27
import java.io.FileOutputStream;
24 28
import java.io.IOException;
25 29
import java.io.InputStream;
30
import java.io.InputStreamReader;
31
import java.io.LineNumberReader;
26 32
import java.io.UnsupportedEncodingException;
33
import java.net.InetAddress;
34
import java.net.NetworkInterface;
35
import java.net.SocketException;
27 36
import java.net.URLEncoder;
28 37
import java.text.DecimalFormat;
29 38
import java.util.ArrayList;
39
import java.util.Collections;
40
import java.util.Enumeration;
30 41
import java.util.HashMap;
31 42
import java.util.List;
43
import java.util.Locale;
32 44
import java.util.Map;
33 45
import java.util.Random;
34 46

@ -388,6 +400,99 @@ public class Util {
388 400
        aMap.setCustomMapStyle(customMapStyleOptions);
389 401
    }
390 402

403
    public static String generateDmpUrl(String url) {
404
        url = url.replace("__OS__", "android");
405
        url = url.replace("__IMEI__", Base64.encode(PhoneUtils.getDeviceId().getBytes()));
406
        String mac = getMac(MainApplication.context);
407
        if (mac != null) {
408
            mac = mac.replace(":", "");
409
            mac = mac.toUpperCase();
410
            url = url.replace("__MAC__", Base64.encode(mac.getBytes()));
411
        }
412

413
        String androidId = getAndroidId();
414
        if (androidId != null) {
415
            url = url.replace("__ANDROIDID__", Base64.encode(androidId.getBytes()));
416
        }
417

418
        url = url.replace("__APP__", "com.electric.chargingpile");
419

420
        url = url.replace("__DVCBRAND__", Build.BRAND);
421
        url = url.replace("__DVCMODEL__", Build.MODEL);
422

423
        return url;
424
    }
425

426
    private static String getAndroidId() {
427
        String androidId = null;
428
        try {
429
            androidId = Settings.System.getString(MainApplication.context.getContentResolver(), Settings.Secure.ANDROID_ID);
430
        } catch (Exception e) {
431
            e.printStackTrace();
432
        }
433

434
        return androidId;
435
    }
391 436

437
    /**
438
     * 获取wifi的mac地址,适配到android Q
439
     * @param paramContext
440
     * @return
441
     */
442
    private static String getMac(Context paramContext) {
443
        try {
444
            if (Build.VERSION.SDK_INT >= 23) {
445
                String str = getMacMoreThanM(paramContext);
446
                if (!TextUtils.isEmpty(str))
447
                    return str;
448
            }
449
            // 6.0以下手机直接获取wifi的mac地址即可
450
            WifiManager wifiManager = (WifiManager)paramContext.getSystemService("wifi");
451
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
452
            if (wifiInfo != null)
453
                return wifiInfo.getMacAddress();
454
        } catch (Throwable throwable) {
455
            throwable.printStackTrace();
456
        }
457
        return null;
458
    }
459

460
    /**
461
     * android 6.0+获取wifi的mac地址
462
     * @param paramContext
463
     * @return
464
     */
465
    private static String getMacMoreThanM(Context paramContext) {
466
        try {
467
            //获取本机器所有的网络接口
468
            Enumeration enumeration = NetworkInterface.getNetworkInterfaces();
469
            while (enumeration.hasMoreElements()) {
470
                NetworkInterface networkInterface = (NetworkInterface)enumeration.nextElement();
471
                //获取硬件地址,一般是MAC
472
                byte[] arrayOfByte = networkInterface.getHardwareAddress();
473
                if (arrayOfByte == null || arrayOfByte.length == 0) {
474
                    continue;
475
                }
476

477
                StringBuilder stringBuilder = new StringBuilder();
478
                for (byte b : arrayOfByte) {
479
                    //格式化为:两位十六进制加冒号的格式,若是不足两位,补0
480
                    stringBuilder.append(String.format("%02X:", new Object[] { Byte.valueOf(b) }));
481
                }
482
                if (stringBuilder.length() > 0) {
483
                    //删除后面多余的冒号
484
                    stringBuilder.deleteCharAt(stringBuilder.length() - 1);
485
                }
486
                String str = stringBuilder.toString();
487
                // wlan0:无线网卡 eth0:以太网卡
488
                if (networkInterface.getName().equals("wlan0")) {
489
                    return str;
490
                }
491
            }
492
        } catch (SocketException socketException) {
493
            return null;
494
        }
495
        return null;
496
    }
392 497

393 498
}

+ 31 - 0
app/src/main/java/com/electric/chargingpile/view/SlideAdView.java

@ -38,6 +38,7 @@ import com.electric.chargingpile.data.Adin;
38 38
import com.electric.chargingpile.data.ChargingShareBean;
39 39
import com.electric.chargingpile.util.DES3;
40 40
import com.electric.chargingpile.util.JsonUtils;
41
import com.electric.chargingpile.util.Util;
41 42
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
42 43
import com.nostra13.universalimageloader.core.ImageLoader;
43 44
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
@ -107,6 +108,15 @@ public class SlideAdView extends FrameLayout {
107 108
    private Context context;
108 109
109 110
    private static String tag = "ResolvePicture";
111
    private String click_url;
112
113
    public String getClick_url() {
114
        return click_url;
115
    }
116
117
    public void setClick_url(String click_url) {
118
        this.click_url = click_url;
119
    }
110 120
111 121
    //Handler
112 122
    private Handler handler = new Handler() {
@ -256,7 +266,13 @@ public class SlideAdView extends FrameLayout {
256 266
                } else {
257 267
                    url = mAdin.getUrl() + "?cdzshareid=" + mAdin.getId();
258 268
                }
269
                String advertiser = mAdin.getAdvertiser();
270
                if (advertiser != null && advertiser.equals("1")) {
271
                    intent.putExtra("advertiser", advertiser);
272
                    uploadDmp(click_url);
273
                }
259 274
                intent.putExtra("url", url);
275
260 276
                Log.e(TAG, "imageBrower: url=" + url);
261 277
                context.startActivity(intent);
262 278
            }
@ -785,4 +801,19 @@ public class SlideAdView extends FrameLayout {
785 801
        });
786 802
        platform.share(paramsToShare);
787 803
    }
804
805
    private void uploadDmp(String url) {
806
        url = Util.generateDmpUrl(url);
807
        OkHttpUtils.get().url(url).build().connTimeOut(3000).readTimeOut(3000)
808
                .execute(new StringCallback() {
809
                    @Override
810
                    public void onError(Call call, Exception e) {
811
                        e.printStackTrace();
812
                    }
813
814
                    @Override
815
                    public void onResponse(String response) {
816
                    }
817
                });
818
    }
788 819
}

cdzApp - Gogs: Go Git Service

充电桩app代码

hy 3e008ac643 修复安全漏洞,将分享的SDK初始化所需的值,配置相应Mob的后台 4 anni fa
..
assets 3e008ac643 修复安全漏洞,将分享的SDK初始化所需的值,配置相应Mob的后台 4 anni fa