我正在使用
PackageManager packageManager = getPackageManager();
List<PackageInfo> mApps = packageManager.getInstalledPackages(0);
检索所有已安装应用的列表。但是,该列表不包含所有已安装的应用程序,有些(例如Twitter)缺少。
为了测试这个,我正在使用
int length = mApps.size();
for(int i=0; i<length; i++){
PackageInfo info = mApps.get(i);
Log.i(TAG, "Package: " + info.packageName);
}
com.twitter.android
和其他人不在记录的字符串中,即使它们已安装在手机上。
P.S。:我也试过
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> mApps = getPackageManager().queryIntentActivities(mainIntent, 0);
显示Twitter,但(显然)不会返回无法通过启动器启动的进程,例如“下载管理器”或“系统UI”。我需要一种能够可靠地返回系统应用和第三方应用的方法。
答案 0 :(得分:1)
这是由于我身边的错误(在满足某个条件后错误地突破for
- 循环)引起的,因此与PackageManager本身或我的方式没有任何关系正在呼唤它。