ホームスクリーンランチャーにインストールされているすべてのショートカットのリストをプログラムで取得したかったのです。オンラインで多くのスニペットを見つけましたが、どれも正しい出力を提供しません
このスニペットの場合:
Intent shortcutsIntent = new Intent(Intent.ACTION_CREATE_SHORTCUT);
ArrayList<Intent> intentList = new ArrayList<Intent>();
Intent intent=null;
String launchers="";
final PackageManager packageManager=getPackageManager();
for(final ResolveInfo resolveInfo:packageManager.queryIntentActivities(shortcutsIntent, 0)) {
launchers=launchers+"\n"+resolveInfo.activityInfo.packageName;
intent=packageManager
.getLaunchIntentForPackage(resolveInfo.activityInfo.packageName);
intentList.add(intent);
}
これは、連絡先、ブラウザなどのプリセット ショートカットのみを提供します。ホーム画面にあるものとは正確には異なります。
このスニペットの間:
PackageManager pm = getPackageManager();
Intent i = new Intent("android.intent.action.MAIN");
i.addCategory("android.intent.category.HOME");
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
if (lst != null) {
for (ResolveInfo resolveInfo : lst) {
}
}
}
com.android.launcher であるデフォルトのランチャーのみを提供します。