Browse Source

feat(update): 增强版本更新功能并优化用户体验

- 添加 REQUEST_INSTALL_PACKAGES 权限- 更新应用图标和名称
- 优化版本更新对话框,支持显示更新内容
- 调整版本更新逻辑,支持非强制更新
- 更新应用版本号至 1.0.1
mws 3 tháng trước cách đây
mục cha
commit
6bdedb0e51

+ 1 - 0
android-sdk-v5-uxsdk/src/main/AndroidManifest.xml

@@ -5,5 +5,6 @@
     <uses-permission android:name="android.permission.VIBRATE" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
 
 </manifest>

+ 1 - 1
app/build.gradle

@@ -16,7 +16,7 @@ android {
         applicationId "com.paul.drone"
         minSdk 24
         targetSdk 35
-        versionCode 1
+        versionCode 2
         versionName "1.0.1"
         manifestPlaceholders["API_KEY"] = project.AIRCRAFT_API_KEY
         manifestPlaceholders["GMAP_API_KEY"] = project.GMAP_API_KEY

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

@@ -51,9 +51,9 @@
         android:allowBackup="true"
         android:dataExtractionRules="@xml/data_extraction_rules"
         android:fullBackupContent="@xml/backup_rules"
-        android:icon="@mipmap/ic_launcher"
+        android:icon="@mipmap/ic_main"
         android:label="@string/app_name_custom"
-        android:roundIcon="@mipmap/ic_launcher_round"
+        android:roundIcon="@mipmap/ic_main"
         android:supportsRtl="true"
         android:theme="@style/Theme.SteelTower"
         android:networkSecurityConfig="@xml/network_security_config"

+ 32 - 4
app/src/main/java/com/paul/drone/activity/LoginActivity.java

@@ -62,6 +62,7 @@ public class LoginActivity extends AppCompatActivity {
     private TextView statusText;
     private Button installButton;
     private AlertDialog dialog;
+    private SessionManager sessionManager;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -69,7 +70,7 @@ public class LoginActivity extends AppCompatActivity {
 
         // 初始化 NetworkRepository
         networkRepository = NetworkRepository.getInstance();
-        SessionManager sessionManager = new SessionManager(this);
+        sessionManager = new SessionManager(this);
 
         updateUtil = VersionUpdateUtil.getInstance(this);
 
@@ -81,7 +82,7 @@ public class LoginActivity extends AppCompatActivity {
                 .subscribe(
                         updateInfoResponse -> {
                             boolean newVersion = updateUtil.isNewVersion(currentVersion, updateInfoResponse.getData().getVersion());
-                            if (newVersion && updateInfoResponse.getData().isForce()) {
+                            if (newVersion) {
                                 // 处理强制更新逻辑 - 显示更新对话框
                                 showForceUpdateDialog(updateInfoResponse);
                             } else {
@@ -276,14 +277,39 @@ public class LoginActivity extends AppCompatActivity {
         TextView statusText = dialogView.findViewById(R.id.dialogStatusText);
         Button cancelButton = dialogView.findViewById(R.id.dialogCancelButton);
         Button installButton = dialogView.findViewById(R.id.dialogInstallButton);
+        TextView updateContentTextView = dialogView.findViewById(R.id.updateContent);
 
         // 设置版本信息
         String currentVersion = updateUtil.getCurrentVersion();
         currentVersionText.setText(currentVersion);
         newVersionText.setText(updateInfo.getVersion());
 
-        // 设置状态文本
-        statusText.setText("检测到重要更新,请立即升级");
+        if (updateInfo.getData() != null && updateInfo.getData().getContent() != null) {
+            // 将字符串中的\n替换为系统换行符
+            String content = updateInfo.getData().getContent().replace("\\n", "\n");
+            updateContentTextView.setText(content);
+        } else {
+            updateContentTextView.setText("暂无更新内容说明");
+        }
+
+
+        // 根据是否强制更新设置取消按钮的可见性
+        if (updateInfo.getData() != null && updateInfo.getData().isForce()) {
+            // 强制更新 - 隐藏取消按钮
+            cancelButton.setVisibility(View.GONE);
+            statusText.setText("检测到重要更新,请立即升级");
+        } else {
+            // 非强制更新 - 显示取消按钮
+            cancelButton.setVisibility(View.VISIBLE);
+            statusText.setText("检测到新版本,建议升级");
+
+            // 设置取消按钮点击事件
+            cancelButton.setOnClickListener(v -> {
+                dialog.dismiss();
+                // 显示登录界面
+                checkLoginStatus(sessionManager);
+            });
+        }
 
         // 隐藏进度条和进度文本(初始状态)
         progressBar.setVisibility(View.GONE);
@@ -294,6 +320,8 @@ public class LoginActivity extends AppCompatActivity {
         installButton.setVisibility(View.VISIBLE);
         installButton.setText("立即更新");
 
+        
+
         // 设置立即更新按钮点击事件
         installButton.setOnClickListener(v -> {
             // 开始下载APK

+ 3 - 0
app/src/main/java/com/paul/drone/data/UpdateInfoResponse.java

@@ -52,6 +52,9 @@ public class UpdateInfoResponse {
         @SerializedName("isForce")
         private int isForce;
 
+        @SerializedName("content")
+        private String content;
+
         // 提供便捷方法获取布尔值
         public boolean isForce() {
             return isForce == 1;

+ 2 - 1
app/src/main/res/layout/dialog_update.xml

@@ -69,12 +69,13 @@
         android:layout_marginBottom="8dp" />
 
     <TextView
+        android:id="@+id/updateContent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:text="• 修复已知问题\n• 优化性能\n• 新增功能"
         android:textSize="14sp"
         android:layout_marginBottom="16dp" />
 
+
     <!-- 进度条 -->
     <ProgressBar
         android:id="@+id/dialogProgressBar"    style="?android:attr/progressBarStyleHorizontal"

BIN
app/src/main/res/mipmap-xxxhdpi/ic_main.png


+ 2 - 2
app/src/main/res/values/strings.xml

@@ -1,6 +1,6 @@
 <resources>
-    <string name="app_name" translatable="false">Dji 无人机</string>
-    <string name="app_name_custom" >Dji 无人机</string>
+    <string name="app_name" translatable="false">铁塔飞控助手</string>
+    <string name="app_name_custom" >铁塔飞控助手</string>
     <string name="send_sms_code" translatable="false">发送验证码</string>
     <string name="resend_sms_code" translatable="false">重新发送(%d)</string>
 </resources>