0

我想知道是否可以检查应用程序是否随 Android 一起提供,例如:图库、联系人、下载、电子邮件等。所有这些类型的应用程序都是我想从我正在创建的列表中排除的应用程序,但不想硬编码名称。

这是我用来获取应用程序名称的代码:

    final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    final List pkgList = getApplicationContext().getPackageManager().queryIntentActivities(mainIntent, 0);

pkgList 包含 ResolveInfo 对象。

编辑:

检查应用程序是否属于 Android 操作系统的一种方法是检查 ResolveInfo.activityInfo.applicationInfo.packageName 是否包含“com.android”字符序列,但我仍然对更优雅的解决方案感兴趣。

4

1 回答 1

1

看到这个答案

基本上,这是:

PackageManager pm = getPackageManager();

//Gets the info for all installed applications
List<ApplicationInfo> apps = pm.getInstalledApplications(0);

for(ApplicationInfo app : apps) {
    if((app.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
        //It's a pre-installed app
    } else if ((app.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 1) {
        //It's a pre-installed app with a market update installed
    }
}
于 2012-10-25T16:51:31.933 回答