2012-04-22 123 views
1

我有这样的代码,返回所有已安装的设备的应用程序的列表:如何获取在Android中使用gps的已安装应用程序列表?

PackageManager pm = this.getPackageManager(); 

Intent intent = new Intent(Intent.ACTION_MAIN, null); 
intent.addCategory(Intent.CATEGORY_LAUNCHER); 

List<ResolveInfo> list =pm.queryIntentActivities(intent,PackageManager.PERMISSION_GRANTED); 
     for (ResolveInfo rInfo : list) { 
      results.add(rInfo.activityInfo.applicationInfo.loadLabel(pm) 
        .toString()); 
      Log.w("Installed Applications", rInfo.activityInfo.applicationInfo 
        .loadLabel(pm).toString()); 
     } 

但现在我想只有我的列表中,它使用GPS服务的应用程序,因为据我了解,如果我可以过滤这些应用程序正在采取的权限,然后我可以解决它,但不知道如何做到这一点。

回答

3

使用可以使用下面的代码片段:::

PackageManager packageManager=this.getPackageManager(); 
List<PackageInfo> applist=packageManager.getInstalledPackages(0); 
Iterator<PackageInfo> it=applist.iterator(); 
while(it.hasNext()){ 
PackageInfo pk=(PackageInfo)it.next(); 
if(PackageManager.PERMISSION_GRANTED==packageManager.checkPermission(Manifest.permission.ACCESS_FINE_LOCATION, pk.packageName)) //checking if the package is having INTERNET permission 
{ 
results.add(""+pk.applicationInfo.loadLabel(packageManager)); 
} 
} 
+0

拨通了该代码的任何想法? – 2012-04-22 07:54:13

+0

我不知道我应该在哪里使用我的代码 – Reyjohn 2012-04-22 07:55:43

+0

你能帮我吗? – Reyjohn 2012-04-22 08:02:21

相关问题