2012-01-27 177 views
2

我正在编写一个Android应用程序,一个塔斯克其他应用程序,我真的不觉得获得另一个应用程序的标签的方式。这是我的观点,我使用ListActivity来选择已安装的应用程序,然后当您单击它时创建Intent和所有应用程序的东西,我想要做的就是向应用程序展示android:label选择,我在ResolverInfo中找到一个名为.activityInfo.labelRes的属性,我认为是用户选择的应用程序的R类的标签描述符,有无论如何获得匹配该ID的字符串? 谢谢! D.Gómez获得了android:标签从

回答

4

您可以使用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); 
} 

为了回答你问题的第二部分也是如此,有关访问应用程序的资源:他们可以通过调用访问getPackageManager().getResourcesForApplication(String),这将返回一个Resources对象,您可以使用,但在你的情况下,这不应该是必要的。

+0

谢谢!这样可行! – DGomez 2012-01-27 19:53:44

+0

好知道我可以访问其他应用程序的所有资源,是一个更通用的解决问题的方法,我在机器人编程新我不是很用API熟悉呢,谢谢你的答案! – DGomez 2012-01-27 20:02:10