我需要创建其他应用程序的主页快捷方式。为了做到这一点,我需要获得可绘制图标的ID。
我可以得到实际的drawable,但我不知道如何在不知道drawabale名称的情况下获取它的ID。
有没有办法找到drawable的名称或从drawable对象中获取ID?
我想我说了太多次了。
//get icon drwable
public Drawable getIcon(String pack) {
final PackageManager pm = context.getPackageManager();
try {
return pm.getApplicationIcon(pack);
} catch (NameNotFoundException e) {
e.printStackTrace();
return null;
}
}
public void makeShortcut(String pack){
Intent shortcutIntent;
shortcutIntent = new Intent();
shortcutIntent.setComponent(new ComponentName(pack, ".classname"));
int iconId =geIconId(pack); // a default icon for now TODO
Log.i("icon id", ""+iconId);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
final Intent putShortCutIntent = new Intent();
putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,
shortcutIntent);
// Sets the custom shortcut's title
putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getAppName(pack));
putShortCutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(
context,iconId));
putShortCutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
context.sendBroadcast(putShortCutIntent);
}
答案 0 :(得分:1)
图标启动器drawableId是相同的。我想,首先获取应用程序图标,然后通过setcomponent启动该应用程序。
您可以使用以下方式获取应用的Drawable图标:
Drawable icon = getPackageManager().getApplicationIcon("com.example");
然后
Intent intent = new Intent(); intent.setComponent(new ComponentName(“com.example”,“com.example.MyExampleActivity”)); startActivity(意向);
答案 1 :(得分:0)
ShortcutIconResource.fromContext(pkgContext,iconId)诀窍! create shortcut for thrid-party app, is that possible?