我有一个应用管理器应用(here),除其他功能外,还可以为启动器上的其他应用创建快捷方式。
在安装这些应用的新版本时,我的应用创建的快捷方式似乎没有更新其图标。
我在多个设备和多个发射器上都注意到了它。 不仅如此,甚至游戏商店创建的图标都不会更新。
不仅如此,而且在某些发射器上,当尝试创建快捷方式时,如果已经存在快捷方式,则无法创建新的快捷方式。
我不仅通过普通应用程序测试了它,而且还通过我自己签名的APK,通过ADB和正常打开APK文件进行了测试(同时还确保版本增加。
有三种方法可以创建快捷方式,但是我在更新时都失败了:
添加带有图标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);
与上述相同,但改为使用ShortcutIconResource:
...
ShortcutIconResource shortcutIconResource=new Intent.ShortcutIconResource();
shortcutIconResource.packageName=packageName;
shortcutIconResource.resourceName=iconResourceName;
putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,shortcutIconResource);
为什么启动器不会更新我的快捷方式,而且其中一些(或全部)在从Play商店创建时甚至不更新?
创建快捷方式的正确方法是什么,在更换/更新应用时会更新?
另外,为什么大多数发射器会忽略添加快捷方式(如果它已经显示?)