我在做一个Android启动作一介绍,以使为自己的Android应用程序,而我设计的一部分,需要我知道有许多应用程序都安装在用户的设备上,并最好只计算这是正常的应用程序,可以将那些被启动。我希望将这些数量的应用程序存储在全局变量中。只考虑这个目标,将这个数字作为变量检索的最简单方法是什么?获取Android设备上已安装应用的数量?
5
A
回答
2
你可以使用的PackageManager
的getInstalledApplications()
方法。
返回已安装的 设备上的所有应用程序包的
List
。如果标志GET_UNINSTALLED_PACKAGES
已定,将返回的所有 应用,包括那些DONT_DELETE_DATA
(部分 安装了数据目录的应用程序)删除列表。
像这样的东西应该工作:
int numberOfInstalledApps = getPackageManager(0).getInstalledApplications().size();
要过滤系统的应用程序,你可以做这样的事情:
int numberOfNonSystemApps = 0;
List<ApplicationInfo> appList = getPackageManager().getInstalledApplications(0);
for(ApplicationInfo info : appList) {
if((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
numberOfNonSystemApps++;
}
}
2
的所有非系统应用程序都有一个启动意图使你只需要获取所有应用程序的列表,并检查其中有多少人具有启动意图,或者如果没有,那么该应用程序将是一个系统应用程序。所有应用程序的列表可以很容易地被包管理器检索,然后我们通过的信息所有的应用程序,同时寻找可用的发射意图。
至于建议by Darshan Patel: @Brad拉尔森♦
PackageManager pm = getPackageManager();
int nonSysAppsCount=0;
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for(ApplicationInfo packageInfo:packages){
if(pm.getLaunchIntentForPackage(packageInfo.packageName) != null){
String currAppName = pm.getApplicationLabel(packageInfo).toString();
nonSysAppsCount++;
//This app is a non-system app
}
else{
//System App
}
}
1
如果您正在寻找安装了这个设备上的非系统应用程序,你可以做到以下几点:
public static ArrayList<String> getInstalledApps() {
ArrayList<String> appList = new ArrayList<>();
List<PackageInfo> packList = getPackageManager().getInstalledPackages(0);
for (int i=0; i < packList.size(); i++) {
PackageInfo packInfo = packList.get(i);
if ( (packInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
String appName = packInfo.applicationInfo.loadLabel(getPackageManager()).toString();
appList.add(appName);
Log.e("App >" + Integer.toString(i), appName);
}
}
return appList;
}
所以,你可以将列表做:
int number = getInstalledApps().size();
此外,您可以通过调用启动任何应用程序:
Intent myIntent = new Intent(Intent.ACTION_MAIN, null);
myIntent.addCategory(Intent.CATEGORY_LAUNCHER);
List appsList = context.getPackageManager().queryIntentActivities(myIntent, 0);
相关问题
- 1. 获取Android设备上安装的应用程序列表 - C#
- 2. 如何获取已安装应用程序的设备的deviceid?
- 3. Android:获取安装在Android设备上的列表
- 4. 如何获取设备上安装的Android应用程序的包名
- 5. 当设备上已安装fb时,Android Facebook SSO不起作用
- 6. 在我的Android设备上获取有关已安装应用程序的信息
- 7. 已签名的apk不会安装在我的Android设备上
- 8. 通过java代码在Android设备上获取已安装应用程序的.apk文件
- 9. 在Android设备上修改已安装的APK
- 10. 获取已安装的Android应用程序的列表
- 11. 在Android设备上安装应用时出现的错误AndroidStudio
- 12. 如何确定在Android设备上安装的应用程序?
- 13. 在Android设备上安装应用程序的新手帮助
- 14. 如何获取Android中已安装应用程序的列表?
- 15. 获取已安装应用程序的列表android
- 16. 在多个Android设备上安装apk
- 17. Android设备上安装APK大
- 18. Android未签名应用程序无法在设备上安装
- 19. Eclipse在设备上安装Android应用程序停止工作
- 20. 如何在Android设备上静默安装应用程序?
- 21. 错误Android设备上未安装应用程序?
- 22. Android应用程序没有安装在设备上?
- 23. FlashDevelop无法在设备上安装Android应用程序
- 24. 获取Android设备上未读邮件的数量
- 25. 如何获取chromebook上已安装的android应用程序包列表?
- 26. 无法在Android Studio中的Android设备上安装Android应用程序
- 27. 获取已安装的应用程序数据问题
- 28. 在Android上获取并显示已安装程序的列表
- 29. 获取已安装的Windows应用商店应用列表
- 30. 使用Eclipse的Android应用程序:应用程序不会安装新鲜,因为它已经在设备上
太感谢你了,这正是担任我需要和它的第一件事,我发现它实际上做的工作。这是我可以在互联网上看到的这个问题的最简单的解决方案。 – MSC
不客气:) – earthw0rmjim