Parcourir la Source

权限申请更改为使用时申请

hy 3 ans auparavant
Parent
commit
50a2415166

+ 3 - 3
app/build.gradle

@ -111,13 +111,13 @@ android {
111 111
112 112
    productFlavors {
113 113
        yingyongbao {}
114
        c360 {}
114
115 115
        xiaomi {}
116 116
        huawei {}
117 117
        oppo {}
118 118
        cdz {}
119
120
//        wandoujia {} baidu {} anzhi {} pp {} vivo {} meizu {} sougou {}
119
        vivo {}
120
//        wandoujia {} baidu {} anzhi {} pp {} vivo {} meizu {} sougou {} c360 {}
121 121
        productFlavors.all { flavor ->
122 122
            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
123 123
        }

+ 2 - 2
app/src/main/AndroidManifest.xml

@ -5,8 +5,8 @@
5 5
    android:versionCode="100"
6 6
    android:versionName="3.5.14">
7 7
8
    <uses-permission android:name="android.permission.BLUETOOTH" />
9
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
8
   <!-- <uses-permission android:name="android.permission.BLUETOOTH" />
9
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />-->
10 10
    <!--
11 11
 If your app targets Android 9 or lower, you can declare
12 12
         ACCESS_COARSE_LOCATION instead.

+ 32 - 6
app/src/main/java/com/electric/chargingpile/activity/MainMapActivity.java

@ -181,6 +181,7 @@ import cn.sharesdk.wechat.friends.Wechat;
181 181
import cn.sharesdk.wechat.moments.WechatMoments;
182 182
import okhttp3.Call;
183 183
import pub.devrel.easypermissions.AfterPermissionGranted;
184
import pub.devrel.easypermissions.AppSettingsDialog;
184 185
import pub.devrel.easypermissions.EasyPermissions;
185 186
186 187
public class MainMapActivity extends Activity implements LocationSource, AMapLocationListener,
@ -285,6 +286,7 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
285 286
    private float mCurPosX;
286 287
    private float mPosY;
287 288
    private float mCurPosY;
289
    private static final int RC_TELL_PERM = 124;
288 290
289 291
    private TextView tv_msg_num;
290 292
    BitmapDescriptor bdyes = BitmapDescriptorFactory.fromResource(R.drawable.icon_sgreen);
@ -710,6 +712,7 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
710 712
    private LatLng markerPosition;
711 713
    private ImageView second_hand_car;
712 714
    private LinearLayout private_telephone;
715
    private String telephone;
713 716
714 717
715 718
    @Override
@ -4413,7 +4416,7 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
4413 4416
        final String poi_jing = JsonUtils.getKeyResult(info, "poi_jing");
4414 4417
        final String poi_wei = JsonUtils.getKeyResult(info, "poi_wei");
4415 4418
        final String fenshi_is = JsonUtils.getKeyResult(info, "fenshi_is");
4416
        final String telephone = JsonUtils.getKeyResult(info, "telephone");
4419
        telephone = JsonUtils.getKeyResult(info, "telephone");
4417 4420
        TextView fenshi_info_textview = findViewById(R.id.fenshi_info_textview);
4418 4421
        fenshi_info_textview.setText("");
4419 4422
@ -4466,11 +4469,7 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
4466 4469
                            .setPositiveButton("呼叫", new View.OnClickListener() {
4467 4470
                                @Override
4468 4471
                                public void onClick(View v) {
4469
                                    Intent intent = new Intent();
4470
                                    intent.setAction("android.intent.action.CALL");
4471
                                    intent.addCategory("android.intent.category.DEFAULT");
4472
                                    intent.setData(Uri.parse("tel:" + telephone));
4473
                                    startActivity(intent);
4472
                                    tellTask();
4474 4473
                                }
4475 4474
                            }).setNegativeButton("取消", new View.OnClickListener() {
4476 4475
                        @Override
@ -5829,5 +5828,32 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
5829 5828
                    }
5830 5829
                });
5831 5830
    }
5831
    @AfterPermissionGranted(RC_TELL_PERM)
5832
    public void tellTask() {
5833
        if (hasTellPermission()) {
5834
            // Have permission, do the thing!
5835
//            Toast.makeText(this, "TODO: Camera things", Toast.LENGTH_LONG).show();
5836
            Intent intent = new Intent();
5837
            intent.setAction("android.intent.action.CALL");
5838
            intent.addCategory("android.intent.category.DEFAULT");
5839
            intent.setData(Uri.parse("tel:" + telephone));
5840
            MainMapActivity.this.startActivity(intent);
5841
5842
        } else {
5843
            LogUtils.e("@@@@@@@");
5844
            // Ask for one permission
5845
            EasyPermissions.requestPermissions(
5846
                    this,
5847
                    "该功能需要开启拨号权限,是否前往开启?",
5848
                    RC_TELL_PERM,
5849
                    Manifest.permission.CALL_PHONE);
5850
        }
5851
    }
5852
    private boolean hasTellPermission() {
5853
        return EasyPermissions.hasPermissions(this, Manifest.permission.CALL_PHONE);
5854
    }
5855
5856
5857
5832 5858
5833 5859
}

+ 7 - 3
app/src/main/java/com/electric/chargingpile/activity/PrivacyAgreementActivity.java

@ -12,6 +12,7 @@ import android.text.TextPaint;
12 12
import android.text.method.LinkMovementMethod;
13 13
import android.text.style.ClickableSpan;
14 14
import android.text.style.StyleSpan;
15
import android.util.Log;
15 16
import android.view.View;
16 17
import android.widget.Button;
17 18
import android.widget.TextView;
@ -31,12 +32,15 @@ public class PrivacyAgreementActivity extends Activity {
31 32
        setContentView(R.layout.activity_privacy_agreement);
32 33
        BarColorUtil.initStatusBarColor(PrivacyAgreementActivity.this);
33 34
        if (ProfileManager.getInstance().getPrivacyAgreement(this)) {
35
            Log.e("TAG_HYC", "onCreate:  getPrivacyAgreement" );
34 36
            startActivity(new Intent(PrivacyAgreementActivity.this, WelcomeActivity.class));
35 37
            finish();
36
        } else if (ProfileManager.getInstance().getPermissionAgreement(PrivacyAgreementActivity.this)) {
38
        } /*else if (ProfileManager.getInstance().getPermissionAgreement(PrivacyAgreementActivity.this)) {
39
            Log.e("TAG_HYC", "onCreate:  getPermissionAgreement" );
37 40
            startActivity(new Intent(PrivacyAgreementActivity.this, PermissionAgreementActivity.class));
38 41
            finish();
39
        } else {
42
        } */else {
43
            Log.e("TAG_HYC", "onCreate:  initView" );
40 44
            initView();
41 45
        }
42 46
    }
@ -80,7 +84,7 @@ public class PrivacyAgreementActivity extends Activity {
80 84
        agreement_btn.setOnClickListener(new View.OnClickListener() {
81 85
            @Override
82 86
            public void onClick(View v) {
83
                startActivity(new Intent(PrivacyAgreementActivity.this, PermissionAgreementActivity.class));
87
                startActivity(new Intent(PrivacyAgreementActivity.this, WelcomeActivity.class));
84 88
                finish();
85 89
            }
86 90
        });

+ 53 - 8
app/src/main/java/com/electric/chargingpile/activity/ZhanDetailsNew.java

@ -1,5 +1,6 @@
1 1
package com.electric.chargingpile.activity;
2 2
3
import android.Manifest;
3 4
import android.app.Activity;
4 5
import android.content.Context;
5 6
import android.content.Intent;
@ -11,6 +12,8 @@ import android.net.Uri;
11 12
import android.os.Bundle;
12 13
import android.os.Handler;
13 14
import android.os.Message;
15
16
import androidx.annotation.NonNull;
14 17
import androidx.viewpager.widget.ViewPager;
15 18
import android.util.Log;
16 19
import android.view.Gravity;
@ -32,6 +35,7 @@ import android.widget.RelativeLayout;
32 35
import android.widget.TextView;
33 36
import android.widget.Toast;
34 37
38
import com.blankj.utilcode.util.LogUtils;
35 39
import com.electric.chargingpile.R;
36 40
import com.electric.chargingpile.application.MainApplication;
37 41
import com.electric.chargingpile.data.Pic;
@ -48,6 +52,7 @@ import com.electric.chargingpile.view.SlideShowView;
48 52
import com.squareup.okhttp.Request;
49 53
import com.squareup.okhttp.Response;
50 54
55
import org.jetbrains.annotations.NotNull;
51 56
import org.json.JSONArray;
52 57
import org.json.JSONException;
53 58
import org.json.JSONObject;
@ -58,9 +63,12 @@ import java.util.ArrayList;
58 63
import java.util.List;
59 64
60 65
import cn.sharesdk.onekeyshare.OnekeyShare;
66
import pub.devrel.easypermissions.AfterPermissionGranted;
67
import pub.devrel.easypermissions.AppSettingsDialog;
68
import pub.devrel.easypermissions.EasyPermissions;
61 69
62 70
63
public class ZhanDetailsNew extends Activity implements OnClickListener {
71
public class ZhanDetailsNew extends Activity implements OnClickListener, EasyPermissions.PermissionCallbacks {
64 72
    private ImageView iv_down, phone;
65 73
    private LinearLayout ll_menu;
66 74
    private ImageView ivBack, ivType, ivZhan, iv_call;
@ -104,7 +112,8 @@ public class ZhanDetailsNew extends Activity implements OnClickListener {
104 112
    private EditText claimer;
105 113
    public final static int RESULT_0 = 0;
106 114
    public final static int RESULT_1 = 1;
107
115
    private static final int RC_TELL_PERM = 124;
116
    private String telNum;
108 117
109 118
//    private ViewPager viewPager;
110 119
//    private ArrayList<View> pageview;
@ -791,12 +800,8 @@ public class ZhanDetailsNew extends Activity implements OnClickListener {
791 800
                        .setPositiveButton("呼叫", new View.OnClickListener() {
792 801
                            @Override
793 802
                            public void onClick(View v) {
794
                                String telNum = zhan.getTelephone().toString();
795
                                Intent intent = new Intent();
796
                                intent.setAction("android.intent.action.CALL");
797
                                intent.addCategory("android.intent.category.DEFAULT");
798
                                intent.setData(Uri.parse("tel:" + telNum));
799
                                ZhanDetailsNew.this.startActivity(intent);
803
                                telNum = zhan.getTelephone().toString();
804
                                tellTask();
800 805
                            }
801 806
                        }).setNegativeButton("取消", new View.OnClickListener() {
802 807
                    @Override
@ -1091,4 +1096,44 @@ public class ZhanDetailsNew extends Activity implements OnClickListener {
1091 1096
            }
1092 1097
        }).start();
1093 1098
    }
1099
    @AfterPermissionGranted(RC_TELL_PERM)
1100
    public void tellTask() {
1101
        if (hasTellPermission()) {
1102
            // Have permission, do the thing!
1103
//            Toast.makeText(this, "TODO: Camera things", Toast.LENGTH_LONG).show();
1104
            Intent intent = new Intent();
1105
            intent.setAction("android.intent.action.CALL");
1106
            intent.addCategory("android.intent.category.DEFAULT");
1107
            intent.setData(Uri.parse("tel:" + telNum));
1108
            ZhanDetailsNew.this.startActivity(intent);
1109
1110
        } else {
1111
            LogUtils.e("@@@@@@@");
1112
            // Ask for one permission
1113
            EasyPermissions.requestPermissions(
1114
                    this,
1115
                    "该功能需要开启拨号权限,是否前往开启?",
1116
                    RC_TELL_PERM,
1117
                    Manifest.permission.CALL_PHONE);
1118
        }
1119
    }
1120
    private boolean hasTellPermission() {
1121
        return EasyPermissions.hasPermissions(this, Manifest.permission.CALL_PHONE);
1122
    }
1123
1124
1125
    @Override
1126
    public void onPermissionsGranted(int requestCode, @NonNull @NotNull List<String> perms) {
1127
1128
    }
1129
1130
    @Override
1131
    public void onPermissionsDenied(int requestCode, List<String> perms) {
1132
        if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
1133
            // TODO add by hyg20200525
1134
            new AppSettingsDialog.Builder(ZhanDetailsNew.this).build().show();
1135
//            new AppSettingsDialog.Builder(InputCodeActivity.this,
1136
//                    "该功能需要开启拨号权限,是否前往开启??").build().show();
1137
        }
1138
    }
1094 1139
}

+ 55 - 7
app/src/main/java/com/electric/chargingpile/fragment/DetailsFragment.java

@ -1,6 +1,7 @@
1 1
package com.electric.chargingpile.fragment;
2 2
3 3
4
import android.Manifest;
4 5
import android.annotation.TargetApi;
5 6
import android.content.Context;
6 7
import android.content.Intent;
@ -26,10 +27,12 @@ import android.widget.Space;
26 27
import android.widget.TextView;
27 28
import android.widget.Toast;
28 29
30
import androidx.annotation.NonNull;
29 31
import androidx.fragment.app.Fragment;
30 32
31 33
import com.amap.api.maps.AMapUtils;
32 34
import com.amap.api.maps.model.LatLng;
35
import com.blankj.utilcode.util.LogUtils;
33 36
import com.electric.chargingpile.R;
34 37
import com.electric.chargingpile.activity.AlterOneActivity;
35 38
import com.electric.chargingpile.activity.ChargingQianDaoActivity;
@ -38,6 +41,7 @@ import com.electric.chargingpile.activity.LoginActivity;
38 41
import com.electric.chargingpile.activity.MainMapActivity;
39 42
import com.electric.chargingpile.activity.NewZhanDetailsActivity;
40 43
import com.electric.chargingpile.activity.PriceDetailsActivity;
44
import com.electric.chargingpile.activity.ZhanDetailsNew;
41 45
import com.electric.chargingpile.application.MainApplication;
42 46
import com.electric.chargingpile.data.ChartData;
43 47
import com.electric.chargingpile.data.MyOtto;
@ -78,6 +82,7 @@ import com.zhy.view.flowlayout.FlowLayout;
78 82
import com.zhy.view.flowlayout.TagAdapter;
79 83
import com.zhy.view.flowlayout.TagFlowLayout;
80 84
85
import org.jetbrains.annotations.NotNull;
81 86
import org.json.JSONArray;
82 87
import org.json.JSONException;
83 88
import org.json.JSONObject;
@ -99,9 +104,13 @@ import java.util.regex.PatternSyntaxException;
99 104
100 105
import me.codeboy.android.aligntextview.AlignTextView;
101 106
import okhttp3.Call;
107
import pub.devrel.easypermissions.AfterPermissionGranted;
108
import pub.devrel.easypermissions.AppSettingsDialog;
109
import pub.devrel.easypermissions.EasyPermissions;
102 110
103
public class DetailsFragment extends Fragment implements View.OnClickListener, OnChartValueSelectedListener {
111
public class DetailsFragment extends Fragment implements View.OnClickListener, OnChartValueSelectedListener, EasyPermissions.PermissionCallbacks {
104 112
    private static final String TAG = "DetailsFragment";
113
    private static final int RC_TELL_PERM = 124;
105 114
    private Zhan zhan = null;
106 115
    private CombinedChart mChart;
107 116
    public static ArrayList<JSONObject> datas;
@ -792,6 +801,7 @@ public class DetailsFragment extends Fragment implements View.OnClickListener, O
792 801
    private String zongjia;
793 802
    private ImageView scan_charge_btn;
794 803
    private Space scan_charge_space;
804
    private String telNum;
795 805
796 806
    @Override
797 807
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
@ -952,14 +962,11 @@ public class DetailsFragment extends Fragment implements View.OnClickListener, O
952 962
                new com.electric.chargingpile.view.AlertDialog(getActivity()).builder()
953 963
                        .setMsg(zhan_name + "  " + telephone)
954 964
                        .setPositiveButton("呼叫", new View.OnClickListener() {
965
955 966
                            @Override
956 967
                            public void onClick(View v) {
957
                                String telNum = telephone.toString();
958
                                Intent intent = new Intent();
959
                                intent.setAction("android.intent.action.CALL");
960
                                intent.addCategory("android.intent.category.DEFAULT");
961
                                intent.setData(Uri.parse("tel:" + telNum));
962
                                getActivity().startActivity(intent);
968
                                telNum = telephone.toString();
969
                                tellTask();
963 970
                            }
964 971
                        }).setNegativeButton("取消", new View.OnClickListener() {
965 972
                    @Override
@ -1528,6 +1535,47 @@ public class DetailsFragment extends Fragment implements View.OnClickListener, O
1528 1535
        super.onDestroyView();
1529 1536
    }
1530 1537
1538
    @AfterPermissionGranted(RC_TELL_PERM)
1539
    public void tellTask() {
1540
        if (hasTellPermission()) {
1541
            // Have permission, do the thing!
1542
//            Toast.makeText(this, "TODO: Camera things", Toast.LENGTH_LONG).show();
1543
            Intent intent = new Intent();
1544
            intent.setAction("android.intent.action.CALL");
1545
            intent.addCategory("android.intent.category.DEFAULT");
1546
            intent.setData(Uri.parse("tel:" + telNum));
1547
            DetailsFragment.this.startActivity(intent);
1548
1549
        } else {
1550
            LogUtils.e("@@@@@@@");
1551
            // Ask for one permission
1552
            EasyPermissions.requestPermissions(
1553
                    this,
1554
                    "该功能需要开启拨号权限,是否前往开启?",
1555
                    RC_TELL_PERM,
1556
                    Manifest.permission.CALL_PHONE);
1557
        }
1558
    }
1559
    private boolean hasTellPermission() {
1560
        return EasyPermissions.hasPermissions(getActivity(), Manifest.permission.CALL_PHONE);
1561
    }
1562
1563
1564
    @Override
1565
    public void onPermissionsGranted(int requestCode, @NonNull @NotNull List<String> perms) {
1566
1567
    }
1568
1569
    @Override
1570
    public void onPermissionsDenied(int requestCode, List<String> perms) {
1571
        if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
1572
            // TODO add by hyg20200525
1573
            new AppSettingsDialog.Builder(DetailsFragment.this).build().show();
1574
//            new AppSettingsDialog.Builder(InputCodeActivity.this,
1575
//                    "该功能需要开启拨号权限,是否前往开启??").build().show();
1576
        }
1577
    }
1578
1531 1579
    public static String getMD5(String content) {
1532 1580
        try {
1533 1581

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

@ -402,7 +402,7 @@ public class Util {
402 402
    }
403 403

404 404
    public static String generateDmpUrl(String url) {
405
        url = url.replace("__OS__", "android");
405
      /*  url = url.replace("__OS__", "android");
406 406
        String mac = getMac(MainApplication.context);
407 407
        if (mac != null) {
408 408
            mac = mac.replace(":", "");
@ -419,7 +419,7 @@ public class Util {
419 419

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

422
*/
423 423
        return url;
424 424
    }
425 425

@ -436,69 +436,69 @@ public class Util {
436 436
        return udid;
437 437
    }
438 438

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

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

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

439
//    /**
440
//     * 获取wifi的mac地址,适配到android Q
441
//     *
442
//     * @param paramContext
443
//     * @return
444
//     */
445
//    private static String getMac(Context paramContext) {
446
//        try {
447
//            if (Build.VERSION.SDK_INT >= 23) {
448
//                String str = getMacMoreThanM(paramContext);
449
//                if (!TextUtils.isEmpty(str))
450
//                    return str;
451
//            }
452
//            // 6.0以下手机直接获取wifi的mac地址即可
453
//            WifiManager wifiManager = (WifiManager) paramContext.getSystemService("wifi");
454
//            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
455
//            if (wifiInfo != null)
456
//                return wifiInfo.getMacAddress();
457
//        } catch (Throwable throwable) {
458
//            throwable.printStackTrace();
459
//        }
460
//        return null;
461
//    }
462
//
463
//    /**
464
//     * android 6.0+获取wifi的mac地址
465
//     *
466
//     * @param paramContext
467
//     * @return
468
//     */
469
//    private static String getMacMoreThanM(Context paramContext) {
470
//        try {
471
//            //获取本机器所有的网络接口
472
//            Enumeration enumeration = NetworkInterface.getNetworkInterfaces();
473
//            while (enumeration.hasMoreElements()) {
474
//                NetworkInterface networkInterface = (NetworkInterface) enumeration.nextElement();
475
//                //获取硬件地址,一般是MAC
476
//                byte[] arrayOfByte = networkInterface.getHardwareAddress();
477
//                if (arrayOfByte == null || arrayOfByte.length == 0) {
478
//                    continue;
479
//                }
480
//
481
//                StringBuilder stringBuilder = new StringBuilder();
482
//                for (byte b : arrayOfByte) {
483
//                    //格式化为:两位十六进制加冒号的格式,若是不足两位,补0
484
//                    stringBuilder.append(String.format("%02X:", new Object[]{Byte.valueOf(b)}));
485
//                }
486
//                if (stringBuilder.length() > 0) {
487
//                    //删除后面多余的冒号
488
//                    stringBuilder.deleteCharAt(stringBuilder.length() - 1);
489
//                }
490
//                String str = stringBuilder.toString();
491
//                // wlan0:无线网卡 eth0:以太网卡
492
//                if (networkInterface.getName().equals("wlan0")) {
493
//                    return str;
494
//                }
495
//            }
496
//        } catch (SocketException socketException) {
497
//            return null;
498
//        }
499
//        return null;
500
//    }
501
//
502 502

503 503
    public static PictureParameterStyle getWhiteStyle(Context context) {
504 504
        // 相册主题