浏览代码

Fix: crash with app icon (#1260)

okhowang 4 年之前
父节点
当前提交
c173114368

+ 11 - 0
common/src/main/java/com/github/kr328/clash/common/compat/App.kt

@@ -2,6 +2,8 @@ package com.github.kr328.clash.common.compat
 
 
 import android.app.ActivityThread
 import android.app.ActivityThread
 import android.app.Application
 import android.app.Application
+import android.graphics.drawable.AdaptiveIconDrawable
+import android.graphics.drawable.Drawable
 import android.os.Build
 import android.os.Build
 import com.github.kr328.clash.common.log.Log
 import com.github.kr328.clash.common.log.Log
 
 
@@ -18,3 +20,12 @@ val Application.currentProcessName: String
             packageName
             packageName
         }
         }
     }
     }
+
+fun Drawable.foreground(): Drawable {
+    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O &&
+        this is AdaptiveIconDrawable && this.background == null
+    ) {
+        return this.foreground
+    }
+    return this
+}

+ 2 - 1
design/src/main/java/com/github/kr328/clash/design/util/App.kt

@@ -2,12 +2,13 @@ package com.github.kr328.clash.design.util
 
 
 import android.content.pm.PackageInfo
 import android.content.pm.PackageInfo
 import android.content.pm.PackageManager
 import android.content.pm.PackageManager
+import com.github.kr328.clash.common.compat.foreground
 import com.github.kr328.clash.design.model.AppInfo
 import com.github.kr328.clash.design.model.AppInfo
 
 
 fun PackageInfo.toAppInfo(pm: PackageManager): AppInfo {
 fun PackageInfo.toAppInfo(pm: PackageManager): AppInfo {
     return AppInfo(
     return AppInfo(
         packageName = packageName,
         packageName = packageName,
-        icon = applicationInfo.loadIcon(pm),
+        icon = applicationInfo.loadIcon(pm).foreground(),
         label = applicationInfo.loadLabel(pm).toString(),
         label = applicationInfo.loadLabel(pm).toString(),
         installTime = firstInstallTime,
         installTime = firstInstallTime,
         updateDate = lastUpdateTime,
         updateDate = lastUpdateTime,