Java 如何在android中显示已安装的应用程序?
使用此代码:Java 如何在android中显示已安装的应用程序?,java,android,android-listview,package,package-managers,Java,Android,Android Listview,Package,Package Managers,使用此代码: final PackageManager pm = getActivity().getPackageManager(); //get a list of installed apps. List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA); for (ApplicationInfo packag
final PackageManager pm = getActivity().getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo packageInfo : packages) {
Log.d(TAG, "Installed package :" + packageInfo.packageName);
Log.d(TAG, "Launch Activity :" + pm.getLaunchIntentForPackage(packageInfo.packageName));
final PackageManager pm=getActivity().getPackageManager();
//获取已安装应用程序的列表。
List packages=pm.getinstalledApplication(PackageManager.GET_元数据);
对于(ApplicationInfo packageInfo:packages){
Log.d(标签,“已安装的软件包:”+packageInfo.packageName);
Log.d(标签,“启动活动:”+pm.getLaunchIntentForPackage(packageInfo.packageName));
我可以在logcat软件包信息等中显示,但我想在我的活动中显示已安装应用的列表,如果可能的话,显示其图标和应用程序的名称。是否可能?
附言:我正在使用片段请参见此演示:
以下内容应用于获取应用程序列表
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
applications = mPackageManage.queryIntentActivities(intent, PackageManager.GET_META_DATA);
试着这样,
首先为PackageItem创建一个模型
public class PackageItem {
private Drawable icon;
private String name;
private String packageName;
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Drawable getIcon() {
return icon;
}
public void setIcon(Drawable icon) {
this.icon = icon;
}
}
步骤2)
这将为您提供所有安装应用程序的列表,以及应用程序名称、图标和软件包
public List<PackageItem> getInstalledApplication(){
PackageManager appInfo = getPackageManager();
List<ApplicationInfo> listInfo = appInfo.getInstalledApplications(0);
Collections.sort(listInfo, new ApplicationInfo.DisplayNameComparator(appInfo));
List<PackageItem> data = new ArrayList<PackageItem>();
for (int index = 0; index < listInfo.size(); index++) {
try {
ApplicationInfo content = listInfo.get(index);
if ((content.flags != ApplicationInfo.FLAG_SYSTEM) && content.enabled) {
if (content.icon != 0) {
PackageItem item = new PackageItem();
item.setName(getPackageManager().getApplicationLabel(content).toString());
item.setPackageName(content.packageName);
item.setIcon(getPackageManager().getDrawable(content.packageName, content.icon, content));
data.add(item);
}
}
} catch (Exception e) {
}
}
return data;
}
公共列表getInstalledApplication(){
PackageManager appInfo=getPackageManager();
List listInfo=appInfo.GetInstalledApplication(0);
排序(listInfo,新的ApplicationInfo.DisplayNameComparator(appInfo));
列表数据=新的ArrayList();
对于(int index=0;index希望这会对您有所帮助。可能的副本一点也不。.我不想启动应用程序,但只显示一个带有应用程序图标及其名称的列表。.您可以使用Alex Lockwood Loaders。其中的示例应用程序显示应用程序列表。完整教程但我必须将此代码放在哪里?我的意思是,我需要一个listview,对吗?因此,我必须创建一个适配器类吗无法在listview中直接插入这些值?@David\D您将在listview中显示这些值,因此您需要适配器,以便可以用图标显示应用程序名称。