每个应用的预览信息主要包括名称、图标、顶部栏颜色等。
默认情况下这些信息会先从应用栈顶Activity的manifest配置中读取:android:icon--图标,android:label--名称,android:theme--各种颜色配置。
如果栈顶Activity没有配置相应的属性,则会使用application的对应属性值。
从Android 5.0开始,可以通过Activity的setTaskDescription方法修改应用名称、图标等信息。相当于先读取栈顶Activity提供的TaskDescription中的配置,如果没有值或者是非法值则按默认顺序读取manifest配置。
但是ActivityManager$TaskDescription内的mIconRes字段是在9.0版本(SDK28)才添加的,相关的构造函数google没有给出版本要求提示,使用在低于9.0版本手机上一定会崩溃,哪怕包在try catch中也会崩溃。
java.lang.NoSuchMethodError: No direct method <init>(Ljava/lang/String;I)V in class Landroid/app/ActivityManager$TaskDescription; or its super classes (declaration of 'android.app.ActivityManager$TaskDescription' appears in /system/framework/framework.jar
所以修改图标最好使用传入Bitmap的构造函数。
2021-04-08
网友评论