从其他应用程序获取 android:label

DGo*_*mez 3 android

我正在编写一个android应用程序,一个Tasker,我真的找不到获取另一个应用程序标签的方法。这是我的观点,我正在使用一个 ListActivity,您可以在其中选择一个已安装的应用程序,然后当您单击它时,它会创建 Intent 和所有应用程序内容,我想要做的是向用户显示他所在应用程序中的 android:label选择后,我在 ResolverInfo 中发现了一个名为 .activityInfo.labelRes 的属性,我认为它是用户选择的应用程序的 R 类的标签描述符,是否有办法获取与该 id 匹配的字符串???\n谢谢! \nD.G\xc3\xb3mez

\n

Frx*_*rem 5

您可以使用loadLabel(PackageManager)方法来ResolveInfo获取活动的标签。下面是一个完整的示例,它查找设备上的所有启动器活动并将它们打印到 logcat:

// Get the package manager
PackageManager pm = getPackageManager();
// Create an intent that matches all launcher activities
// (and ignores non-launcher activities)
Intent launcherIntent = new Intent(Intent.ACTION_MAIN);
launcherIntent.addCategory(Intent.CATEGORY_LAUNCHER);

// Get all activites matching the intent
List<ResolveInfo> launchers = pm.queryIntentActivities(launcherIntent, 0);

for(ResolveInfo info : launchers) {
  // Get the activity label and print it
  CharSequence label = info.loadLabel(pm);
  Log.v("LabelTest", "App found: " + label);
}
Run Code Online (Sandbox Code Playgroud)

也回答您问题的第二部分,关于访问应用程序的资源:可以通过调用来访问它们getPackageManager().getResourcesForApplication(String),这将返回Resources您可以使用的对象,尽管在您的情况下,这不是必需的。