Android 编程下如何获取有 Internet 访问权限的应用

应用程序在运行过程中所需要的权限是被写在应用的 AndroidManifest.xml 下的,在 Android 中这些信息是被封装在 PackageInfo 中的,所以要获取权限的信息,我们就需要先获取到 PackageManager ,再通过 PackageManager  获取指定条件的 PackageInfo  信息,通过比对 PackageInfo 所携带的权限信息来判断对应的应用是否具有 Internet 的权限,判断应用是否具有其他权限同理。实现代码如下:

public void getInternetAppInfos() {

   /************************ 获取包管理器 *************************/
   PackageManager manager = getPackageManager();

   /** 获取未被卸载同时在清单文件中设置了 <uses-permission> 的包信息 **/
   List<PackageInfo> packageInfos = manager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES | PackageManager.GET_PERMISSIONS);

   /****** 遍历获取包信息及包信息中包含的 <uses-permission> 信息 *****/
   for (PackageInfo info : packageInfos) {
       String[] permissions = info.requestedPermissions;
       if (permissions != null) {
           for (String permission : permissions) {
               if (permission.equals(Manifest.permission.INTERNET)) {
                   ApplicationInfo appInfo = info.applicationInfo;
                   String appname = appInfo.loadLabel(manager).toString();
                   String packageName = appInfo.packageName;
                   int uid = appInfo.uid;
                   System.out.println(appname + ":" + packageName + ":" + uid);
               }
           }
       }
   }
}

 

posted @ 2013-02-12 13:26  sunzn  阅读(2963)  评论(1编辑  收藏  举报