From 3a4343f647f038a9e8366f17b33a07fdfd8b680c Mon Sep 17 00:00:00 2001
From: zuoxiao <470321431@qq.com>
Date: 星期四, 05 十二月 2024 10:26:57 +0800
Subject: [PATCH] 1.添加巡检时的后台定位权限获取

---
 app/src/main/java/com/dayu/pipirrapp/observer/LoginObserver.java |   20 ------
 app/src/main/AndroidManifest.xml                                 |    1 
 app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java         |    6 --
 app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java   |   12 ++--
 app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java   |   83 +++++++++++++++++++++++----
 5 files changed, 77 insertions(+), 45 deletions(-)

diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fde78da..549d89d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -26,7 +26,6 @@
     <!--濡傛灉鎮ㄧ殑搴旂敤闇�瑕佸悗鍙板畾浣嶆潈闄愶紝涓旀湁鍙兘杩愯鍦ˋndroid Q璁惧涓�,骞朵笖璁剧疆浜唗arget>28锛屽繀椤诲鍔犺繖涓潈闄愬0鏄�-->
     <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
 
-
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission
         android:name="android.permission.WRITE_MEDIA_STORAGE"
diff --git a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
index ac24cfa..c06bbe0 100644
--- a/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
+++ b/app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -53,6 +53,10 @@
 import com.dayu.pipirrapp.utils.ToastUtil;
 import com.dayu.pipirrapp.utils.WebViewUtils;
 import com.dayu.pipirrapp.view.ConfirmDialog;
+import com.dayu.pipirrapp.view.TipUtil;
+import com.hjq.permissions.OnPermissionCallback;
+import com.hjq.permissions.Permission;
+import com.hjq.permissions.XXPermissions;
 import com.jeremyliao.liveeventbus.LiveEventBus;
 import com.tencent.bugly.crashreport.CrashReport;
 
@@ -300,7 +304,7 @@
 //                    }
                     } else {
                         //涓嬭浇鐡︾墖
-                        ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(),androidUrl);
+                        ApiManager.getInstance().donwLoadTile(MapFragment.this.getContext(), androidUrl);
                     }
 //                    Log.d(TAG, "鍦ㄧ嚎鍔犺浇>>>" + url);
                 }
@@ -343,7 +347,17 @@
         });
         //宸℃鎸夐挳
         binding.inspectButton.setOnClickListener(v -> {
-            chageInspecState(InspectionUtils.STAT_INSPECTION_ONCLICK);
+            if (XXPermissions.isGranted(MapFragment.this.getContext(), Permission.ACCESS_BACKGROUND_LOCATION)) {
+                chageInspecState(InspectionUtils.STAT_INSPECTION_ONCLICK);
+            } else {
+                TipUtil.show(MapFragment.this.getActivity(), "宸℃瀹氫綅闇�瑕佹偍閫夋嫨\"濮嬬粓鍏佽\"瀹氫綅淇℃伅锛屽惁鍒欐棤娉曞贰妫�銆�", new TipUtil.TipListener() {
+                    @Override
+                    public void onCancle() {
+                        getPermissions();
+                    }
+                });
+            }
+
         });
         //鏆傚仠宸℃
         binding.inspectPause.setOnClickListener(v -> {
@@ -522,18 +536,21 @@
                         confirmDialog.dismiss();
                         chageInspecState(InspectionUtils.NO_INSPECTION);
                         SharedPreferencesHelper.getInstance(MapFragment.this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.NO_INSPECTION);
-                        //鏇存柊鏈湴鏁版嵁搴撶粨鏉熸椂闂�
-                        mInspectionBean.setStopTime(DateUtils.getNowDateStr());
-                        InspectionUtils.upataInspectionData(MapFragment.this.getContext(), mInspectionBean);
-                        //涓婃姤缁撴潫鏃堕棿
-                        InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(lastLatLonBean, mInspectionBean);
-                        InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
-                        pushLocationData(inspectionLocationBean);
-                        mInspectionBean = new InspectionBean();
-                        //娓呴櫎鍦板浘宸℃杞ㄨ抗
-                        mWebView.evaluateJavascript("javascript:cleanLocationLay()", value -> {
-                        });
-                        lastLatLonBean = null;
+                        //鏈夊彲鑳借繕娌¤幏鍙栧埌瀹氫綅淇℃伅灏辩粨鏉熷贰妫�浜�
+                        if (lastLatLonBean != null) {
+                            //鏇存柊鏈湴鏁版嵁搴撶粨鏉熸椂闂�
+                            mInspectionBean.setStopTime(DateUtils.getNowDateStr());
+                            InspectionUtils.upataInspectionData(MapFragment.this.getContext(), mInspectionBean);
+                            //涓婃姤缁撴潫鏃堕棿
+                            InspectionLocationBean inspectionLocationBean = InspectionUtils.createInspectionLocation(lastLatLonBean, mInspectionBean);
+                            InspectionUtils.addInspectionLocationData(MapFragment.this.getContext(), inspectionLocationBean);
+                            pushLocationData(inspectionLocationBean);
+                            mInspectionBean = new InspectionBean();
+                            //娓呴櫎鍦板浘宸℃杞ㄨ抗
+                            mWebView.evaluateJavascript("javascript:cleanLocationLay()", value -> {
+                            });
+                            lastLatLonBean = null;
+                        }
                     }
                 });
                 confirmDialog.show();
@@ -590,4 +607,42 @@
         SharedPreferencesHelper.getInstance(this.getContext()).put(CommonKeyName.inspectionState, InspectionUtils.STAT_INSPECTION);
     }
 
+
+    /**
+     * 鐢宠鍚庡彴瀹氫綅鏉冮檺
+     */
+    private void getPermissions() {
+        try {
+            XXPermissions.with(MapFragment.this.getContext())
+                    // 鐢宠澶氫釜鏉冮檺
+                    .permission(Permission.ACCESS_BACKGROUND_LOCATION)
+                    .request(new OnPermissionCallback() {
+
+                        @Override
+                        public void onGranted(@NonNull List<String> permissions, boolean allGranted) {
+                            if (allGranted) {
+                                chageInspecState(InspectionUtils.STAT_INSPECTION_ONCLICK);
+                            }
+                        }
+
+                        @Override
+                        public void onDenied(@NonNull List<String> permissions, boolean doNotAskAgain) {
+                            if (doNotAskAgain) {
+                                // 濡傛灉鏄姘镐箙鎷掔粷灏辫烦杞埌搴旂敤鏉冮檺绯荤粺璁剧疆椤甸潰
+                                TipUtil.show(MapFragment.this.getActivity(), "琚案涔呮嫆缁濇巿鏉冿紝璇锋墜鍔ㄦ巿浜堝畾浣嶅缁堝厑璁告潈闄�!閫夋嫨鈥滄潈闄愨��-->鈥滀綅缃俊鎭��-->鈥滃缁堝厑璁糕��,鐒跺悗杩斿洖搴旂敤銆�", new TipUtil.TipListener() {
+                                    @Override
+                                    public void onCancle() {
+                                        XXPermissions.startPermissionActivity(MapFragment.this.getContext(), permissions);
+                                    }
+                                });
+                            } else {
+                                ToastUtil.showToastLong(MapFragment.this.getContext(), "鑾峰彇瀹氫綅濮嬬粓鍏佽鏉冮檺澶辫触");
+                            }
+                        }
+                    });
+
+        } catch (Throwable e) {
+            e.printStackTrace();
+        }
+    }
 }
diff --git a/app/src/main/java/com/dayu/pipirrapp/observer/LoginObserver.java b/app/src/main/java/com/dayu/pipirrapp/observer/LoginObserver.java
index 6fbd481..08e2a07 100644
--- a/app/src/main/java/com/dayu/pipirrapp/observer/LoginObserver.java
+++ b/app/src/main/java/com/dayu/pipirrapp/observer/LoginObserver.java
@@ -30,6 +30,7 @@
             Permission.WRITE_EXTERNAL_STORAGE,
             Permission.READ_EXTERNAL_STORAGE,
             Permission.READ_PHONE_STATE
+
     };
 
     Activity myActivity;
@@ -60,7 +61,7 @@
 
                         @Override
                         public void onGranted(@NonNull List<String> permissions, boolean allGranted) {
-                            if (permissions.contains(Permission.WRITE_EXTERNAL_STORAGE)){
+                            if (permissions.contains(Permission.WRITE_EXTERNAL_STORAGE)) {
                                 TagBean tagBean = DaoSingleton.getInstance(myActivity).tagDao().findFirst();
                                 if (tagBean == null || TextUtils.isEmpty(tagBean.getTag())) {
                                     choesLibrary();
@@ -68,24 +69,9 @@
                                     MyApplication.myApplication.myTag = tagBean.getTag();
                                 }
                             }
-                            if (allGranted) {
-
-
-                            }
-
                             if (!allGranted) {
 //                                toast("鑾峰彇閮ㄥ垎鏉冮檺鎴愬姛锛屼絾閮ㄥ垎鏉冮檺鏈甯告巿浜�");
-                                return;
                             }
-//                            if (!XXPermissions.isGranted(myActivity, Permission.SYSTEM_ALERT_WINDOW)) {
-//                                new TipDialog(MainActivity.this, "璇峰紑鍚偓娴獥鏉冮檺,鍏佽鏈簲鐢ㄦ樉绀哄湪鍏朵粬搴旂敤鐨勪笂灞�", new TipUtil.TipListener() {
-//                                    @Override
-//                                    public void onCancle() {
-//                                        XXPermissions.startPermissionActivity(MainActivity.this, Permission.SYSTEM_ALERT_WINDOW);
-//                                    }
-//                                }).show();
-//                            }
-//                            toast("鑾峰彇褰曢煶鍜屾棩鍘嗘潈闄愭垚鍔�");
                         }
 
                         @Override
@@ -93,8 +79,6 @@
                             if (doNotAskAgain) {
 //                                toast("琚案涔呮嫆缁濇巿鏉冿紝璇锋墜鍔ㄦ巿浜堝綍闊冲拰鏃ュ巻鏉冮檺");
                                 // 濡傛灉鏄姘镐箙鎷掔粷灏辫烦杞埌搴旂敤鏉冮檺绯荤粺璁剧疆椤甸潰
-
-
                             } else {
 //                                toast("鑾峰彇褰曢煶鍜屾棩鍘嗘潈闄愬け璐�");
                             }
diff --git a/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java b/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
index add7b6f..9e8ccd3 100644
--- a/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
+++ b/app/src/main/java/com/dayu/pipirrapp/tool/InspectionUtils.java
@@ -21,14 +21,13 @@
 import com.dayu.pipirrapp.net.BaseResponse;
 import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
 import com.dayu.pipirrapp.utils.DateUtils;
+import com.dayu.pipirrapp.utils.MyLog;
 import com.tencent.bugly.crashreport.CrashReport;
 
 import java.util.List;
 import java.util.UUID;
 
 import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
-import io.reactivex.rxjava3.functions.Action;
-import io.reactivex.rxjava3.functions.Consumer;
 import io.reactivex.rxjava3.schedulers.Schedulers;
 
 /**
@@ -163,6 +162,7 @@
      * @param inspectionLocationBeans
      */
     private static void postInspectionData(Context context, InspectionBean inspectionBean, List<InspectionLocationBean> inspectionLocationBeans) {
+        MyLog.d("postInspectionData>>>涓婁紶鏈笂浼犳垚鍔熺殑鏁版嵁");
         InspectionRequest inspectionRequest = new InspectionRequest();
         inspectionRequest.setInspectId(inspectionBean.getInspectId());
         inspectionRequest.setInspectorId(inspectionBean.getInspectorId());
@@ -182,19 +182,20 @@
             public void onNext(BaseResponse<List<InsectionResult>> t) {
                 try {
                     if (t.isSuccess()) {
+                        MyLog.d("postInspectionData>>>涓婁紶鏈笂浼犳垚鍔熺殑鏁版嵁銆嬨�嬨�嬨�嬫垚鍔�");
                         if (t.getContent() != null) {
                             inspectionBean.setInspectId(String.valueOf(t.getContent().get(0).getInspectId()));
                             InspectionUtils.upataInspectionData(context, inspectionBean);
                         }
                         DaoSingleton.getAsynchInstance(context).inspectionLocationDao().updataByInspectIdSetIsPost(inspectionBean.getmInspectId()).subscribeOn(Schedulers.io()).observeOn(Schedulers.io()).subscribe(() -> {
                             // 鎻掑叆鎴愬姛鐨勫洖璋�
-                            Log.d(TAG, "addInspectionLocationData鏁版嵁鎻掑叆鎴愬姛");
+                            Log.d(TAG, "updataByInspectIdSetIsPost鏁版嵁鎻掑叆鎴愬姛");
                         }, throwable -> {
                             // 澶勭悊閿欒
-                            Log.e(TAG, "addInspectionLocationData鏁版嵁鎻掑叆澶辫触", throwable);
+                            Log.e(TAG, "updataByInspectIdSetIsPost鏁版嵁鎻掑叆澶辫触", throwable);
                         });
                     } else {
-
+                        MyLog.d("postInspectionData>>>涓婁紶鏈笂浼犳垚鍔熺殑鏁版嵁銆嬨�嬨�嬨�嬪け璐�");
                     }
                 } catch (Exception e) {
                     e.printStackTrace();
@@ -272,7 +273,6 @@
         inspectionLocationBean.setmInspectId(mInspectionBean.getmInspectId());
         inspectionLocationBean.setLocateTime(DateUtils.getNowDateStr());
         inspectionLocationBean.setPost(false);
-
         inspectionLocationBean.setLng(String.valueOf(latLonBean.getLongitude()));
         inspectionLocationBean.setLat(String.valueOf(latLonBean.getLatitude()));
         return inspectionLocationBean;
diff --git a/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java b/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java
index cbb1d8a..9ae2797 100644
--- a/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java
+++ b/app/src/main/java/com/dayu/pipirrapp/utils/NetUtils.java
@@ -51,17 +51,11 @@
 
     public static void registerNetCallBack(Context context, ConnectivityManager.NetworkCallback networkCallback) {
         // 娉ㄥ唽缃戠粶鐘舵�佺洃鍚�
-
         ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
 
         // 鏋勫缓涓�涓� NetworkRequest锛屾寚瀹氭劅鍏磋叮鐨勭綉缁滅被鍨�
         NetworkRequest networkRequest = new NetworkRequest.Builder()
-
                 .build();
-
-        // 缃戠粶鍥炶皟
-
-
         // 娉ㄥ唽缃戠粶鐩戝惉
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
             cm.registerNetworkCallback(networkRequest, networkCallback);

--
Gitblit v1.8.0