Android 为什么不';t应用程序快捷方式';安装新版本时是否更新图标? 背景

Android 为什么不';t应用程序快捷方式';安装新版本时是否更新图标? 背景,android,icons,updates,shortcut,android-launcher,Android,Icons,Updates,Shortcut,Android Launcher,我有一个app manager app(),除了其他功能外,它还可以创建到启动器上其他应用的快捷方式 问题 在安装新版本的应用程序时,我的应用程序创建的快捷方式似乎不会更新图标 我在多台设备和多个发射器上都注意到了这一点。 不仅如此,甚至play store创建的图标也不会得到更新 不仅如此,在某些启动器上,当尝试创建快捷方式时,如果已经有快捷方式,则无法创建新的快捷方式 我试过的 我不仅用普通的应用程序进行了测试,还通过ADB和正常打开APK文件(同时确保版本增加)在我自己签名的APK上进行了

我有一个app manager app(),除了其他功能外,它还可以创建到启动器上其他应用的快捷方式

问题 在安装新版本的应用程序时,我的应用程序创建的快捷方式似乎不会更新图标

我在多台设备和多个发射器上都注意到了这一点。 不仅如此,甚至play store创建的图标也不会得到更新

不仅如此,在某些启动器上,当尝试创建快捷方式时,如果已经有快捷方式,则无法创建新的快捷方式

我试过的 我不仅用普通的应用程序进行了测试,还通过ADB和正常打开APK文件(同时确保版本增加)在我自己签名的APK上进行了测试

有3种方法可以创建快捷方式,但都无法更新:

  • 添加带有图标res id的快捷方式:

    Intent shortcutIntent;
    shortcutIntent=new Intent();
    //    shortcutIntent.putExtra("duplicate",false);  //optional
    shortcutIntent.setClassName(packageName,fullPathToActivity);
    shortcutIntent.setAction(Intent.ACTION_MAIN);
    final Intent putShortCutIntent=new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,shortcutIntent);
    putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,title);
    Resources resources=pm.getResourcesForApplication(packageName);
    final Intent launchIntentForPackage=pm.getLaunchIntentForPackage(packageName);
    if(TextUtils.equals(launchIntentForPackage.getComponent().getClassName(),fullPathToActivity))
      iconRes=applicationInfo.icon;
    else
      iconRes=pm.getActivityInfo(new ComponentName(packageName,fullPathToActivity),0).icon;
    if(iconRes==0)
      iconRes=applicationInfo.icon;
    String iconResourceName=resources.getResourceName(iconRes);
    putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,iconRes);
    
  • 同上,但使用位图作为图标:

    ...
    Bitmap appIcon=...
    putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON,appIcon);
    
  • 同上,但改用ShortcutionResource:

    ...
    ShortcutIconResource shortcutIconResource=new Intent.ShortcutIconResource();
    shortcutIconResource.packageName=packageName;
    shortcutIconResource.resourceName=iconResourceName;
    putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,shortcutIconResource);
    
  • 问题 为什么启动器不更新我的快捷方式,而其中一些(或全部)甚至在从Play Store创建快捷方式时也不更新

    创建快捷方式的正确方法是什么,这些快捷方式将在更换/更新应用程序时得到更新

    另外,如果已经显示了快捷方式,为什么大多数启动器会忽略添加快捷方式