From a231e3aee7881a679243df42ecdd4f4c04adfe87 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期五, 10 一月 2025 10:10:48 +0800
Subject: [PATCH] 2025年01月10日10:10:45
---
app/src/main/res/values/strings.xml | 2
app/src/main/res/values/themes.xml | 17 +++
app/src/main/java/com/hdl/photovoltaic/ui/me/CPersonalDataActivity.java | 28 ++--
app/src/main/AndroidManifest.xml | 8
app/src/main/java/com/hdl/photovoltaic/widget/PermissionExplanationDialog.java | 82 ++++++++++++++++
app/src/main/res/layout/dialog_permission_explanation.xml | 45 +++++++++
gradle.properties | 3
app/src/main/res/drawable/oval_color_white_18.xml | 12 ++
app/src/main/res/values-zh/strings.xml | 2
wheelview/src/androidTest/java/test/wheelview/ExampleInstrumentedTest.java | 46 ++++----
pickerview/src/androidTest/java/com/bigkoo/pickerview/ApplicationTest.java | 20 ++--
app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java | 8 +
app/src/main/res/values-en/strings.xml | 2
app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListEdit.java | 6 +
app/build.gradle | 2
15 files changed, 228 insertions(+), 55 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 6b03070..d1417a0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -90,7 +90,7 @@
*/
android.applicationVariants.configureEach { variant ->
variant.outputs.configureEach {
- outputFileName = "photovoltaic_v${versionName}_${generateTime()}_${getEnvironmentVersion(2)}.apk"
+ outputFileName = "photovoltaic_v${versionName}_${generateTime()}_${getEnvironmentVersion(4)}.apk"
}
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 2653181..0d0a0ca 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,10 +8,10 @@
tools:ignore="ProtectedPermissions" />
- <!--Android13 鐓х墖-->
- <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
- <!--Android13 瑙嗛-->
- <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
+<!-- <!–Android13 鐓х墖–>-->
+<!-- <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />-->
+<!-- <!–Android13 瑙嗛–>-->
+<!-- <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />-->
<!--Android13 闊抽-->
<!-- <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />-->
<uses-permission android:name="android.permission.VIBRATE" />
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/me/CPersonalDataActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/me/CPersonalDataActivity.java
index f0e1da1..8148fc5 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/me/CPersonalDataActivity.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/me/CPersonalDataActivity.java
@@ -114,29 +114,29 @@
//Manifest.permission.WRITE_EXTERNAL_STORAGE 璇诲啓璁惧涓婄殑鐓х墖浠ュ強鏂囦欢
//generalPermission.launch(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE});
//Android 13浠ヤ笂鐢ㄥ埆鐨勬潈闄�
- if (Build.VERSION.SDK_INT >= 33) {
- PermissionUtils.requestPermissionsResultCallback(_mActivity, Manifest.permission.READ_MEDIA_IMAGES, new PermissionUtils.PermissionState() {
- @Override
- public void Success(int value) {
- if (value == PermissionUtils.STATUS_REFUSE_PERMANENT) {
-// HdlThreadLogic.toast(_mActivity, R.string.permission_open);
- return;
- }
- changedUserAvatar();
- }
- }, true);
- } else {
+// if (Build.VERSION.SDK_INT >= 33) {
+// PermissionUtils.requestPermissionsResultCallback(_mActivity, Manifest.permission.READ_MEDIA_IMAGES, new PermissionUtils.PermissionState() {
+// @Override
+// public void Success(int value) {
+// if (value == PermissionUtils.STATUS_REFUSE_PERMANENT) {
+//// HdlThreadLogic.toast(_mActivity, R.string.permission_open);
+// return;
+// }
+// changedUserAvatar();
+// }
+// }, true);
+// } else {
PermissionUtils.requestPermissionsResultCallback(_mActivity, Manifest.permission.WRITE_EXTERNAL_STORAGE, new PermissionUtils.PermissionState() {
@Override
public void Success(int value) {
- if (value == PermissionUtils.STATUS_REFUSE_PERMANENT) {
+ if (value == PermissionUtils.STATUS_REFUSE_PERMANENT | value == PermissionUtils.STATUS_REFUSE) {
// HdlThreadLogic.toast(_mActivity, R.string.permission_open);
return;
}
changedUserAvatar();
}
}, true);
- }
+// }
}
});
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListEdit.java b/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListEdit.java
index 9548f9a..a042b29 100644
--- a/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListEdit.java
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/newC/PowerStationsListEdit.java
@@ -31,6 +31,7 @@
import com.hdl.photovoltaic.utils.LocalManageUtil;
import com.hdl.photovoltaic.utils.PermissionUtils;
import com.hdl.photovoltaic.widget.ConfirmationCancelDialog;
+import com.hdl.photovoltaic.widget.PermissionExplanationDialog;
import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -123,10 +124,13 @@
viewBinding.addPowerStationTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+ // 鏈巿鏉� 濡傛灉搴旂敤绋嬪簭娌℃湁鎵�闇�鐨勬潈闄愶紝鍒欐樉绀鸿В閲婅鏄�
+ PermissionExplanationDialog.getInstance().showPortConflictPdDialog(_mActivity, getString(R.string.camera_storage_instructions), getString(R.string.camera_storage_purpose));
PermissionUtils.requestPermissionsResultCallback(_mActivity, Manifest.permission.CAMERA, new PermissionUtils.PermissionState() {
@Override
public void Success(int value) {
- if (value == PermissionUtils.STATUS_REFUSE_PERMANENT) {
+ PermissionExplanationDialog.getInstance().dismiss();
+ if (value == PermissionUtils.STATUS_REFUSE_PERMANENT | value == PermissionUtils.STATUS_REFUSE) {
// HdlThreadLogic.toast(_mActivity, R.string.permission_open);
return;
}
diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
index 2aa33c7..c492c84 100644
--- a/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
+++ b/app/src/main/java/com/hdl/photovoltaic/utils/PermissionUtils.java
@@ -139,12 +139,15 @@
public void onGranted(List<String> permissions, boolean all) {
SharedPreUtils.putBoolean(permission, true);
if (permissionStateCallback != null) {
- permissionStateCallback.Success(STATUS_REFUSE);
+ permissionStateCallback.Success(STATUS_SUCCESS);
}
}
@Override
public void onDenied(List<String> permissions, boolean never) {
+ if (permissionStateCallback != null) {
+ permissionStateCallback.Success(STATUS_REFUSE);
+ }
if (is_skip) {
SharedPreUtils.putBoolean(permission, true);
}
@@ -155,6 +158,9 @@
// if (permissionStateCallback != null) {
// permissionStateCallback.Success(STATUS_REFUSE_PERMANENT);
// }
+ if (permissionStateCallback != null) {
+ permissionStateCallback.Success(STATUS_REFUSE_PERMANENT);
+ }
if (is_skip) {
HdlDialogLogic.getInstance().showSettingPermissionDialog(activity);
}
diff --git a/app/src/main/java/com/hdl/photovoltaic/widget/PermissionExplanationDialog.java b/app/src/main/java/com/hdl/photovoltaic/widget/PermissionExplanationDialog.java
new file mode 100644
index 0000000..1e2d723
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/widget/PermissionExplanationDialog.java
@@ -0,0 +1,82 @@
+package com.hdl.photovoltaic.widget;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.view.Display;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.widget.TextView;
+
+import com.hdl.photovoltaic.R;
+import com.hdl.photovoltaic.other.HdlCommonLogic;
+import com.hdl.photovoltaic.utils.UnitConversionUtils;
+
+import java.util.Objects;
+
+
+public class PermissionExplanationDialog {
+
+ private Dialog portConflictPd;
+ private volatile static PermissionExplanationDialog mInstance;
+
+ public PermissionExplanationDialog() {
+ }
+
+ public static PermissionExplanationDialog getInstance() {
+ if (mInstance == null) {
+ synchronized (PermissionExplanationDialog.class) {
+ if (mInstance == null) {
+ mInstance = new PermissionExplanationDialog();
+ }
+ }
+ }
+ return mInstance;
+ }
+
+ public void showPortConflictPdDialog(Context context, String description, String purpose) {
+
+ if (portConflictPd != null) {
+ try {
+ portConflictPd.show();
+ } catch (Exception e) {
+
+ }
+ } else {
+ Dialog dialog = new Dialog(context, R.style.video_dialog);
+ View view = LayoutInflater.from(context).inflate(R.layout.dialog_permission_explanation, null);
+ dialog.setContentView(view, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
+
+ WindowManager windowManager = Objects.requireNonNull(dialog.getWindow()).getWindowManager();
+ Display display = windowManager.getDefaultDisplay();
+ WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
+ lp.width = (int) (display.getWidth() * 0.9); //璁剧疆瀹藉害
+ dialog.getWindow().setGravity(Gravity.TOP);
+ lp.y = (int) UnitConversionUtils.dpToPx(context, 44);
+
+ dialog.getWindow().setAttributes(lp);
+
+ TextView tvDescription = view.findViewById(R.id.tv_description);
+ tvDescription.setText(description);
+
+ TextView tvPurpose = view.findViewById(R.id.tv_purpose);
+ tvPurpose.setText(purpose);
+
+ portConflictPd = dialog;
+ portConflictPd.show();
+ }
+ }
+
+ public void dismiss() {
+ try {
+ if (portConflictPd != null) {
+ portConflictPd.dismiss();
+ portConflictPd = null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/app/src/main/res/drawable/oval_color_white_18.xml b/app/src/main/res/drawable/oval_color_white_18.xml
new file mode 100644
index 0000000..93e0af7
--- /dev/null
+++ b/app/src/main/res/drawable/oval_color_white_18.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape>
+ <solid android:color="@color/white" />
+ <corners android:topLeftRadius="18dp"
+ android:topRightRadius="18dp"
+ android:bottomLeftRadius="18dp"
+ android:bottomRightRadius="18dp"/>
+ </shape>
+ </item>
+</selector>
diff --git a/app/src/main/res/layout/dialog_permission_explanation.xml b/app/src/main/res/layout/dialog_permission_explanation.xml
new file mode 100644
index 0000000..923daeb
--- /dev/null
+++ b/app/src/main/res/layout/dialog_permission_explanation.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
+
+ <RelativeLayout
+ android:layout_width="343dp"
+ android:layout_height="wrap_content"
+ android:layout_centerHorizontal="true"
+ android:background="@drawable/oval_color_white_18">
+
+ <TextView
+ android:id="@+id/tv_description"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="@dimen/dp_16"
+ android:layout_marginTop="@dimen/dp_20"
+ android:text="111111"
+ android:textColor="#0A0A0A"
+ android:textSize="16sp"
+ android:textStyle="bold" />
+
+ <TextView
+ android:id="@+id/tv_purpose"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/tv_description"
+ android:layout_marginStart="@dimen/dp_16"
+ android:layout_marginTop="@dimen/dp_12"
+ android:text="222222"
+ android:textColor="#0A0A0A"
+ android:textSize="16sp" />
+
+ <View
+ android:id="@+id/view_split"
+ android:layout_width="match_parent"
+ android:layout_height="0.5dp"
+ android:layout_below="@id/tv_purpose"
+ android:layout_marginTop="@dimen/dp_20" />
+
+ </RelativeLayout>
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml
index 06edb12..11f5982 100644
--- a/app/src/main/res/values-en/strings.xml
+++ b/app/src/main/res/values-en/strings.xml
@@ -333,5 +333,7 @@
<string name="radio">Radio</string>
<string name="min">Min</string>
<string name="max">Max</string>
+ <string name="camera_storage_instructions">Camera and Storage Permission Usage Instructions:</string>
+ <string name="camera_storage_purpose">Used for scanning codes, taking photos, uploading pictures from albums, reading and writing photos on devices, and other scenarios</string>
</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml
index c9fc7f7..c181ef0 100644
--- a/app/src/main/res/values-zh/strings.xml
+++ b/app/src/main/res/values-zh/strings.xml
@@ -330,6 +330,8 @@
<string name="radio">姣旂巼</string>
<string name="min">鏈�灏忓��</string>
<string name="max">鏈�澶у��</string>
+ <string name="camera_storage_instructions">鐩告満銆佸瓨鍌ㄦ潈闄愪娇鐢ㄨ鏄庯細</string>
+ <string name="camera_storage_purpose">鐢ㄤ簬鎵爜銆佹媿鐓с�佷粠鐩稿唽涓婁紶鍥剧墖銆佽鍐欒澶囦笂鐨勭収鐗囩瓑鍦烘櫙</string>
</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 237adaf..541c951 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -330,6 +330,8 @@
<string name="radio">姣旂巼</string>
<string name="min">鏈�灏忓��</string>
<string name="max">鏈�澶у��</string>
+ <string name="camera_storage_instructions">鐩告満銆佸瓨鍌ㄦ潈闄愪娇鐢ㄨ鏄庯細</string>
+ <string name="camera_storage_purpose">鐢ㄤ簬鎵爜銆佹媿鐓с�佷粠鐩稿唽涓婁紶鍥剧墖銆佽鍐欒澶囦笂鐨勭収鐗囩瓑鍦烘櫙</string>
</resources>
\ No newline at end of file
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 4c093a9..2ca9755 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -81,4 +81,21 @@
<item name="android:windowFullscreen">true</item>
</style>
+ <style name="video_dialog" parent="@android:style/Theme.Dialog">
+ <!-- 鑳屾櫙棰滆壊鍙婂拰閫忔槑绋嬪害 -->
+ <item name="android:windowBackground">@color/transparent</item>
+ <!-- 鏄惁鍘婚櫎鏍囬 -->
+ <item name="android:windowNoTitle">true</item>
+ <!-- 鏄惁鍘婚櫎杈规 -->
+ <item name="android:windowFrame">@null</item>
+ <!-- 鏄惁娴幇鍦╝ctivity涔嬩笂 -->
+ <item name="android:windowIsFloating">true</item>
+ <item name="android:windowIsTranslucent">true</item>
+ <!-- 鏄惁寮�鍚崐閫忔槑鐨勮儗鏅� -->
+ <item name="android:backgroundDimEnabled">true</item>
+ <!-- 鍗婇�忔槑鐨勮儗鏅殑閫忔槑搴� -->
+ <item name="android:backgroundDimAmount">0.6</item>
+ <item name="android:background">@color/transparent</item>
+ </style>
+
</resources>
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 98aeb05..d7154ba 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -20,4 +20,5 @@
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
# 鍙互灏唙4,v7搴撹浆鎴怉ndroid X
-android.enableJetifier=true
\ No newline at end of file
+android.enableJetifier=true
+android.bundle.enableUncompressedNativeLibs=false
\ No newline at end of file
diff --git a/pickerview/src/androidTest/java/com/bigkoo/pickerview/ApplicationTest.java b/pickerview/src/androidTest/java/com/bigkoo/pickerview/ApplicationTest.java
index e820eb1..84067f5 100644
--- a/pickerview/src/androidTest/java/com/bigkoo/pickerview/ApplicationTest.java
+++ b/pickerview/src/androidTest/java/com/bigkoo/pickerview/ApplicationTest.java
@@ -1,13 +1,13 @@
package com.bigkoo.pickerview;
import android.app.Application;
-import android.test.ApplicationTestCase;
-
-/**
- * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
- */
-public class ApplicationTest extends ApplicationTestCase<Application> {
- public ApplicationTest() {
- super(Application.class);
- }
-}
\ No newline at end of file
+//import android.test.ApplicationTestCase;
+//
+///**
+// * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
+// */
+//public class ApplicationTest extends ApplicationTestCase<Application> {
+// public ApplicationTest() {
+// super(Application.class);
+// }
+//}
\ No newline at end of file
diff --git a/wheelview/src/androidTest/java/test/wheelview/ExampleInstrumentedTest.java b/wheelview/src/androidTest/java/test/wheelview/ExampleInstrumentedTest.java
index b5aa002..8cbab30 100644
--- a/wheelview/src/androidTest/java/test/wheelview/ExampleInstrumentedTest.java
+++ b/wheelview/src/androidTest/java/test/wheelview/ExampleInstrumentedTest.java
@@ -1,26 +1,26 @@
package test.wheelview;
import android.content.Context;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import static org.junit.Assert.*;
-
-/**
- * Instrumentation test, which will execute on an Android device.
- *
- * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
- */
-@RunWith(AndroidJUnit4.class)
-public class ExampleInstrumentedTest {
- @Test
- public void useAppContext() throws Exception {
- // Context of the app under test.
- Context appContext = InstrumentationRegistry.getTargetContext();
-
- assertEquals("test.wheelview.test", appContext.getPackageName());
- }
-}
+//import android.support.test.InstrumentationRegistry;
+//import android.support.test.runner.AndroidJUnit4;
+//
+//import org.junit.Test;
+//import org.junit.runner.RunWith;
+//
+//import static org.junit.Assert.*;
+//
+///**
+// * Instrumentation test, which will execute on an Android device.
+// *
+// * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+// */
+//@RunWith(AndroidJUnit4.class)
+//public class ExampleInstrumentedTest {
+// @Test
+// public void useAppContext() throws Exception {
+// // Context of the app under test.
+// Context appContext = InstrumentationRegistry.getTargetContext();
+//
+// assertEquals("test.wheelview.test", appContext.getPackageName());
+// }
+//}
--
Gitblit v1.8.0