Преглед на файлове

[app自升级] 修复以下问题:
1、有新版本时,检查更新处没有红点提醒
2、无网络时进行检查更新或立即更新,没有无网络相关提醒
3、通知栏中的应用下载名称,是否需要更换,当前为com.sikey;且正在下载新版本提示语是英文的,不是中文

songchengcheng преди 2 седмици
родител
ревизия
c24b4570b0

+ 20 - 11
app/src/main/java/com/sikey/interconnect/component/network/http/UpdateManager.kt

@@ -10,6 +10,7 @@ import android.content.pm.PackageManager
 import android.net.Uri
 import android.os.Build
 import android.os.Environment
+import androidx.annotation.RequiresApi
 import androidx.core.app.ActivityCompat
 import androidx.core.app.NotificationCompat
 import androidx.core.app.NotificationManagerCompat
@@ -56,8 +57,8 @@ class UpdateManager {
 
     fun startDownload(updateInfo: UpdateInfo) {
         val request = DownloadManager.Request(Uri.parse(updateInfo.apkUrl)).apply {
-            setTitle("${mContext?.packageName}")
-            setDescription("Downloading new version...")
+            setTitle(mContext?.getString(R.string.app_name))
+            setDescription(mContext?.getString(R.string.update_app_downloading))
             setDestinationInExternalFilesDir(mContext, Environment.DIRECTORY_DOWNLOADS, DOWNLOADED_APK_FILENAME)
             setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE)
         }
@@ -118,6 +119,7 @@ class UpdateManager {
         }
     }
 
+    @RequiresApi(Build.VERSION_CODES.TIRAMISU)
     private fun registerDownloadReceiver(context: Context) {
         val receiver = object : BroadcastReceiver() {
             override fun onReceive(context: Context, intent: Intent) {
@@ -130,20 +132,26 @@ class UpdateManager {
                         val status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS))
                         when (status) {
                             DownloadManager.STATUS_SUCCESSFUL -> {
-                                Logger.d(TAG, "======== DownloadManager.STATUS_SUCCESSFUL")
+                                Logger.d(TAG, "======== DownloadManager.STATUS_SUCCESSFUL2")
                                 NotificationManagerCompat.from(context).cancel(notificationId)
                                 val apkFile = File(mContext?.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), DOWNLOADED_APK_FILENAME)
-                                val md5 = calculateMD5(apkFile)
-                                Logger.d(TAG, "======== DownloadManager downloadInfo.md5:${downloadInfo.md5}, md5:$md5")
-                                if (apkFile.exists() && downloadInfo.md5.equals(md5, ignoreCase = true)) {
-                                    Logger.d(TAG, "======== DownloadManager showInstallDialog")
-                                    showInstallDialog()
-                                } else {
-                                    if (apkFile.exists()) {
+                                if (apkFile.exists()) {
+                                    val md5 = calculateMD5(apkFile)
+                                    Logger.d(TAG, "======== DownloadManager downloadInfo.md5:${downloadInfo.md5}, md5:$md5")
+                                    if (downloadInfo.md5.equals(md5, ignoreCase = true)) {
+                                        Logger.d(TAG, "======== DownloadManager showInstallDialog")
+                                        showInstallDialog()
+                                    } else {
                                         apkFile.delete()
+                                        if (downloadInfo.retry < 2) {
+                                            Logger.d(TAG, "======== DownloadManager downloadInfo.retry:${downloadInfo.retry}")
+                                            downloadInfo.retry ++
+                                            startDownload(UpdateInfo("", "", downloadInfo.apkUrl, downloadInfo.md5))
+                                        }
                                     }
+                                } else {
                                     if (downloadInfo.retry < 2) {
-                                        Logger.d(TAG, "======== DownloadManager downloadInfo.retry:${downloadInfo.retry}")
+                                        Logger.d(TAG, "======== DownloadManager file not exist, retry:${downloadInfo.retry}")
                                         downloadInfo.retry ++
                                         startDownload(UpdateInfo("", "", downloadInfo.apkUrl, downloadInfo.md5))
                                     }
@@ -254,6 +262,7 @@ class UpdateManager {
 
                 override fun onFailure(call: Call<UpdateAppRepo>, t: Throwable) {
                     Logger.e(TAG, "Network error: ${t.message}")
+                    ToastUtils.showLongToast(R.string.network_status_0)
                 }
             })
         }

+ 15 - 1
app/src/main/java/com/sikey/interconnect/ui/avtivity/component/right/AboutusActivity.kt

@@ -206,12 +206,26 @@ class AboutusActivity : BaseNoActionBarActivity() {
                 }
 
                 ResUtils.getString(R.string.check_update) -> {
-                    item.title = ResUtils.getString(R.string.check_update)
                     item.subHandler = SubSkipHandler { context ->
                         UpdateManager.getInstance().checkForUpdate(this) {
                             showUpdateDialog(this, it)
                         }
                     }
+
+                    UpdateManager.getInstance().checkForUpdate(this) {
+                        for (itemTemp in mItems) {
+                            if (itemTemp.title == ResUtils.getString(R.string.check_update)) {
+                                if (VersionUtils.getVersionCode(this) < it.versionCode.toInt()) {
+                                    itemTemp.type = AboutusType.CONTENT_WITH_SUB
+                                    itemTemp.content = getString(R.string.update_app_title)
+                                } else {
+                                    itemTemp.type = AboutusType.CONTENT_WITHOUT_SUB
+                                    itemTemp.content = ""
+                                }
+                                mAdapter?.notifyDataSetChanged()
+                            }
+                        }
+                    }
                 }
 
                 else -> {

+ 4 - 4
app/src/main/res/layout/aboutus_content_item_layout.xml

@@ -20,11 +20,11 @@
             android:id="@+id/skipImageView"
             android:scaleType="fitXY"
             android:layout_alignParentRight="true"
-            android:layout_centerVertical="true"
+            android:layout_marginTop="@dimen/space_value_huge"
             android:layout_marginRight="@dimen/space_value_large"
-            android:src="@drawable/ic_next"
-            android:layout_width="20dp"
-            android:layout_height="20dp" />
+            android:src="@drawable/red_corner"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content" />
 
         <TextView
             android:id="@+id/contentTv"

+ 1 - 0
app/src/main/res/values-zh-rCN/strings.xml

@@ -1082,5 +1082,6 @@
     <string name="update_app_detail">优化相关功能,修复了若干问题</string>
     <string name="update_app_already_latest_ver">已是最新版本</string>
     <string name="update_app_start_downloading">开始下载,请在通知栏查看进度。下载完成前请勿退出应用</string>
+    <string name="update_app_downloading">正在下载新版本…</string>
 </resources>
 

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -1187,4 +1187,5 @@
     <string name="update_app_detail">Optimized relevant features and fixed several issues.</string>
     <string name="update_app_already_latest_ver">Already the latest version</string>
     <string name="update_app_start_downloading">The download has started. Please check the progress in notification bar.</string>
+    <string name="update_app_downloading">Downloading new version…</string>
 </resources>