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