Browse Source

优化首次获取位置权限时,给予用户相关提示

hy 3 years ago
parent
commit
9a594d18b9

+ 20 - 5
app/src/main/java/com/electric/chargingpile/activity/MainMapActivity.java

@ -128,8 +128,10 @@ import com.electric.chargingpile.util.SystemTypeUtil;
128 128
import com.electric.chargingpile.util.ToastUtil;
129 129
import com.electric.chargingpile.util.Util;
130 130
import com.electric.chargingpile.util.ZhanDBHelper;
131
import com.electric.chargingpile.view.AlertDialog;
131 132
import com.electric.chargingpile.view.AlertDialogCommon;
132 133
import com.electric.chargingpile.view.AlertDialogUpdate;
134
import com.electric.chargingpile.view.LocationPermissionsDialog;
133 135
import com.electric.chargingpile.view.NotRegisterDialog;
134 136
import com.electric.chargingpile.view.PreferentialDialog;
135 137
import com.electric.chargingpile.view.SlideAdView;
@ -1375,6 +1377,7 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
1375 1377
                mlocationClient.startLocation();
1376 1378
            }
1377 1379
            if (!hasLocationPermission()) {
1380
                Log.e(TAG, "onResume: hyc 1" );
1378 1381
                requestLocationPermission();
1379 1382
            }
1380 1383
            againPoint = "";
@ -1519,15 +1522,27 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
1519 1522
                    requestLocationPermission();
1520 1523
                }
1521 1524
            } else { // 首次启动
1525
1522 1526
                ProfileManager.getInstance().setStartedRequestLocationPermission(MainMapActivity.this, true);
1523
                EasyPermissions.requestPermissions(
1524
                        this,
1525
                        "为了定位您的位置,推荐充电桩,充电桩位置路线导航需要开启位置权限,是否前往开启?",
1526
                        RC_Location_FIRST_PERM,
1527
                        Manifest.permission.ACCESS_FINE_LOCATION);
1527
                new LocationPermissionsDialog(context)
1528
                        .builder()
1529
                        .setMsg("需要确定您所在的城市,首页才能显示您所在的城市的站点信息,请您授权定位")
1530
                        .setLeftButton("取消",v -> {
1531
1532
                        })
1533
                        .setRightButton("确定",v->{
1534
                                EasyPermissions.requestPermissions(
1535
                                        this,
1536
                                        "为了定位您的位置,推荐充电桩,充电桩位置路线导航需要开启位置权限,是否前往开启?",
1537
                                        RC_Location_FIRST_PERM,
1538
                                        Manifest.permission.ACCESS_FINE_LOCATION);
1539
1540
                        }).show();
1541
1528 1542
            }
1529 1543
1530 1544
            if (hasLocationPermission()) {
1545
                Log.e(TAG, "onResume: hyc 4" );
1531 1546
                requestLocationPermission();
1532 1547
            }
1533 1548

+ 117 - 0
app/src/main/java/com/electric/chargingpile/view/LocationPermissionsDialog.java

@ -0,0 +1,117 @@
1
package com.electric.chargingpile.view;
2
3
import android.app.Dialog;
4
import android.content.Context;
5
import android.view.Display;
6
import android.view.Gravity;
7
import android.view.LayoutInflater;
8
import android.view.View;
9
import android.view.ViewTreeObserver;
10
import android.view.WindowManager;
11
import android.widget.Button;
12
import android.widget.FrameLayout;
13
import android.widget.ImageView;
14
import android.widget.LinearLayout;
15
import android.widget.TextView;
16
17
import com.electric.chargingpile.R;
18
19
public class LocationPermissionsDialog {
20
    private Context context;
21
    private Dialog dialog;
22
    private Display display;
23
    private LinearLayout lLayout_bg;
24
    private Button btn_left;
25
    private Button btn_right;
26
    private TextView txt_msg;
27
28
    public LocationPermissionsDialog(Context context) {
29
        this.context = context;
30
        WindowManager windowManager = (WindowManager) context
31
                .getSystemService(Context.WINDOW_SERVICE);
32
        display = windowManager.getDefaultDisplay();
33
    }
34
    public LocationPermissionsDialog builder() {
35
        // 获取Dialog布局
36
        View view = LayoutInflater.from(context).inflate(
37
                R.layout.layout_location_permissions, null);
38
39
        // 获取自定义Dialog布局中的控件
40
        lLayout_bg = (LinearLayout) view.findViewById(R.id.lLayout_bg);
41
        txt_msg = (TextView) view.findViewById(R.id.txt_msg);
42
        btn_left = (Button) view.findViewById(R.id.btn_left);
43
        btn_right = (Button) view.findViewById(R.id.btn_right);
44
45
46
        // 定义Dialog布局和参数
47
        dialog = new Dialog(context, R.style.AlertDialogStyle);
48
        dialog.setContentView(view);
49
50
        // 调整dialog背景大小
51
        lLayout_bg.setLayoutParams(new FrameLayout.LayoutParams((int) (display
52
                .getWidth() * 0.85), LinearLayout.LayoutParams.WRAP_CONTENT));
53
54
        return this;
55
    }
56
    public LocationPermissionsDialog setLeftButton(String text,
57
                                            final View.OnClickListener listener) {
58
       if (btn_left!=null){
59
           btn_left.setText(text);
60
           btn_left.setOnClickListener(new View.OnClickListener() {
61
               @Override
62
               public void onClick(View v) {
63
                   try {
64
                       listener.onClick(v);
65
                       dialog.dismiss();
66
                   } catch (Exception e) {
67
                       e.printStackTrace();
68
                   }
69
70
               }
71
           });
72
73
       }
74
75
        return this;
76
    }
77
    public LocationPermissionsDialog setRightButton(String text,
78
                                            final View.OnClickListener listener) {
79
       if (btn_right!=null){
80
           btn_right.setText(text);
81
           btn_right.setOnClickListener(new View.OnClickListener() {
82
               @Override
83
               public void onClick(View v) {
84
                   try {
85
                       listener.onClick(v);
86
                       dialog.dismiss();
87
                   } catch (Exception e) {
88
                       e.printStackTrace();
89
                   }
90
91
               }
92
           });
93
94
       }
95
96
        return this;
97
    }
98
99
    public LocationPermissionsDialog setMsg(String msg) {
100
        if (txt_msg!=null){
101
            txt_msg.setText(msg);
102
        }
103
        return this;
104
    }
105
    public void show() {
106
        dialog.show();
107
    }
108
109
    public boolean isShowing() {
110
        if (dialog.isShowing()) {
111
            return true;
112
        } else {
113
            return false;
114
        }
115
    }
116
117
}

+ 56 - 0
app/src/main/res/layout/layout_location_permissions.xml

@ -0,0 +1,56 @@
1
<?xml version="1.0" encoding="utf-8"?>
2
<com.zhy.autolayout.AutoLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
    android:id="@+id/lLayout_bg"
4
    android:layout_width="800px"
5
    android:layout_height="450px"
6
    android:background="@drawable/offlinearrow_but_normal"
7
    android:orientation="vertical" >
8
9
    <TextView
10
        android:id="@+id/txt_msg"
11
        android:gravity="center"
12
        android:textSize="14sp"
13
        android:hint="需要确定您所在的城市,首页才能显示您所在的城市的信息,请您授权定位"
14
        android:layout_marginEnd="12dp"
15
        android:layout_marginStart="12dp"
16
        android:layout_marginBottom="20dp"
17
        android:layout_marginTop="20dp"
18
        android:layout_gravity="center"
19
        android:layout_width="wrap_content"
20
        android:layout_weight="1"
21
        android:layout_height="wrap_content"/>
22
    <com.zhy.autolayout.AutoLinearLayout
23
        android:id="@+id/autoLayout"
24
        android:layout_width="match_parent"
25
        android:layout_height="130px"
26
        android:orientation="horizontal" >
27
28
        <Button
29
            android:id="@+id/btn_left"
30
            android:layout_width="wrap_content"
31
            android:layout_height="130px"
32
            android:layout_weight="1"
33
            android:background="@drawable/alertdialog_left_selector"
34
            android:gravity="center"
35
            android:textColor="@color/actionsheet_green"
36
            android:textSize="16sp"
37
            />
38
39
        <ImageView
40
            android:id="@+id/img_line"
41
            android:layout_width="0.5dp"
42
            android:layout_height="130px"
43
            android:background="@color/Line" />
44
45
        <Button
46
            android:id="@+id/btn_right"
47
            android:layout_width="wrap_content"
48
            android:layout_height="130px"
49
            android:layout_weight="1"
50
            android:background="@drawable/alertdialog_right_selector"
51
            android:gravity="center"
52
            android:textColor="@color/actionsheet_green"
53
            android:textSize="16sp" />
54
    </com.zhy.autolayout.AutoLinearLayout>
55
56
</com.zhy.autolayout.AutoLinearLayout>