我的问题:
我想使用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
}
}
那么有没有更好/更快或更简单的方法?