アプリケーションのショートカットを作成するために以下のコードを使用しました。このメソッドをスプラッシュスクリーン (私の最初の画面) ページに追加しました。最初の実行時にショートカットが作成されます。問題は、実行のたびにショートカットが作成されることです。私の活動開始。
public boolean setShortCut(Context context, String appName) {
System.out.println("in the shortcutapp on create method ");
boolean flag = false;
int app_id = -1;
PackageManager p = context.getPackageManager();
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> res = p.queryIntentActivities(i, 0);
System.out.println("the res size is: " + res.size());
for (int k = 0; k < res.size(); k++) {
System.out.println("the application name is: "
+ res.get(k).activityInfo.loadLabel(p));
if (res.get(k).activityInfo.loadLabel(p).toString().equals(appName)) {
flag = true;
app_id = k;
break;
}
}
if (flag) {
ActivityInfo ai = res.get(app_id).activityInfo;
Intent shortcutIntent = new Intent();
shortcutIntent.setClassName(ai.packageName, ai.name);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, appName);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
Intent.ShortcutIconResource.fromContext(context,
R.drawable.app_icon));
// intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
context.sendBroadcast(intent);
System.out.println("in the shortcutapp on create method completed");
} else
System.out.println("appllicaton not found");
return true;
}