0

我正在尝试复制 Android 默认拥有的应用程序网格,加载所有“可启动”应用程序。

我这样做。

//generate the intent to get the application list 
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

PackageManager manager = getPackageManager();
applicationList = manager.queryIntentActivities(mainIntent, 0);

//sort the list 
Collections.sort(applicationList, new ResolveInfo.DisplayNameComparator(manager));

//user in calculating percentage. 
if (applicationList.size() > 0 ){
    for (ResolveInfo info : applicationList) {

一旦我处理了列表以在网格视图中显示应用程序的名称 + 图标,但是当涉及到相机时,我不断获得画廊标签和图标。

获取我使用的标签:

PackageManager manager = getPackageManager();
(String) manager.getApplicationLabel(applicationInfo)

用于获取图标

info.loadIcon(getContext().getPackageManager());

其中 info 是 ApplicationInfo 对象。

我想知道会发生什么。

到目前为止,我刚刚注意到该应用程序,但它可能是另一个。

任何人都知道如何从相机 ResolveInfo 获取相机应用程序

在调试时,我截取了一个屏幕截图,这是我为该 ResolveInfo 获得的信息

相机分辨率信息(信息)

谢谢指教。塞萨尔·格列兹。

4

1 回答 1

1

我想知道会发生什么。

您正在获取应用程序的图标和标签。“相机”和“画廊”来自具有两个可启动活动的单个应用程序。

您需要获取活动的图标和标签,而不是应用程序。调用loadLabel()loadIcon()ResolveInfo获取ResolveInfo指向的活动的图标和标签。

这个示例应用程序演示了如何构建这样一个启动器,它正确地获取了用于其条目的相机活动图标。

于 2013-06-22T23:16:28.623 回答