私の問題:
インストールされているすべてのアプリケーションをIntent Category
Category.LAUNCHER
. そのため、ランチャーに表示されるすべてのアプリを取得してから
、パッケージと名前を解決したいと考えています。
そのようなpackage: "com.android.phone" -- name: "Phone"
私のコードは基本的に機能しますが、これを簡単にできることはわかっています。
final PackageManager pm = getPackageManager();
Intent main = new Intent(Intent.ACTION_MAIN, null);
main.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> packages = pm.queryIntentActivities(main, 0);
for (ResolveInfo resolve_info : packages)
{
try
{
//THIS TWO
String package_name = resolve_info.activityInfo.packageName;
String app_name = (String)pm.getApplicationLabel(pm.getApplicationInfo(package_name, PackageManager.GET_META_DATA));
Log.i("TEST", "package = <" + package_name + "> name = <" + app_name + ">");
}
catch(Exception e)
{
//package not found -- should never happen
}
}
それで、より良い/より速い、またはより簡単な方法はありますか?