文档章节

Android获取系统应用及安装应用的权限列表

LiSteven
 LiSteven
发布于 2013/02/02 17:56
字数 290
阅读 5353
收藏 17

主要通过PackageManager中的方法

代码:

public class InstallApps extends ListActivity {
   

    HashMap<String, String[]> map=new HashMap<String, String[]>();
    List<String> packagelist=new ArrayList<String>();
    List<String> systemApp=new ArrayList<String>();
    protected void onCreate(android.os.Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        PackageManager pm=getPackageManager();
      //List<PackageInfo> mPackageinfo=  pm.getInstalledPackages(PackageManager.GET_PERMISSIONS);
       Intent query=new Intent(Intent.ACTION_MAIN);
       query.addCategory("android.intent.category.LAUNCHER");
        List<ResolveInfo> resolves= pm.queryIntentActivities(query, PackageManager.GET_ACTIVITIES);
       for (int i = 0; i < resolves.size(); i++) {
          ResolveInfo info= resolves.get(i);

  / /判断是否为系统级应用
         if((info.activityInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)<=0){
             /*安装的应用*/
             String packagename=info.loadLabel(pm).toString();    
            String[] permission;
            try {
                permission = pm.getPackageInfo(info.activityInfo.packageName, PackageManager.GET_PERMISSIONS).requestedPermissions;//获取权限列表
                packagelist.add(packagename);
                map.put(packagename, permission);
          } catch (NameNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
           
          } else{
              /*系统应用*/
              String packagename=info.loadLabel(pm).toString();
              String[] permission;
            try {
                permission = pm.getPackageInfo(info.activityInfo.packageName, PackageManager.GET_PERMISSIONS).requestedPermissions;//获取权限列表
                systemApp.add(packagename);
                map.put(packagename, permission);
             } catch (NameNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
             }
        
             
          }
       
    }
    /*  判断是否属于系统应用
      for (int i = 0; i < mPackageinfo.size(); i++) {
       PackageInfo info=mPackageinfo.get(i);
       if((info.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)<=0){
           String packagename=info.applicationInfo.loadLabel(pm).toString();    
          String[] permission= info.requestedPermissions;
          packagelist.add(packagename);
          map.put(packagename, permission);
        } else{
            String packagename=info.applicationInfo.loadLabel(pm).toString();
            String[] permission= info.requestedPermissions;
             systemApp.add(packagename);
            map.put(packagename, permission);
           
        }
    }*/
      packagelist.addAll(systemApp);
   
      getListView().setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, packagelist));
      getListView().setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
            // TODO Auto-generated method stub
            String[]permission=map.get(packagelist.get(position));
            StringBuilder sb=new StringBuilder();
            for (int i = 0; i < permission.length; i++) {
              sb.append("权限"+permission[i]+"\n");
            }
            Toast.makeText(getApplicationContext(), sb,Toast.LENGTH_LONG ).show();
           
        }
       });
       
       
    };

}

本文转载自:http://blog.csdn.net/androidchuxueze/article/details/7336468

共有 人打赏支持
LiSteven

LiSteven

粉丝 38
博文 268
码字总数 11616
作品 0
深圳
程序员
Android系统对应用程序权限申请的处理方式分析

Android系统对应用程序权限申请的处理方式分析 对Android源代码中的如下文件进行分析: (1) InstallAppProgress.java:其路径为packagesappsPackageInstallersrccomandroidpackageinstaller...

AlexMahoneFBI
2014/08/26
0
0
Android app 在线更新那点事儿(适配Android6.0、7.0、8.0)

一、前言 app在线更新是一个比较常见需求,新版本发布时,用户进入我们的app,就会弹出更新提示框,第一时间更新新版本app。在线更新分为以下几个步骤: 在线更新就上面几个步骤,前2步比较简...

codeGoogle
04/28
0
0
Android AndroidManifest 清单文件以及权限详解

每个Android应用都需要一个名为AndroidManifest.xml的程序清单文件,这个清单文件名是固定的并且放在每个Android应用的根目录下。它定义了该应用对于Android系统来说一些非常重要的信息。And...

程序袁_绪龙
2015/01/13
0
0
Android程序运行时权限与文件系统权限的区别

要区分apk运行时的拥有的权限与在文件系统上被访问(读写执行)的权限两个概念。 apk程序是运行在虚拟机上的,对应的是Android独特的权限机制,只有体现到文件系统上时才使用linux的权限设置。...

gavin_jin
2012/03/02
0
0
Android 渗透测试学习手册 第一章 Android 安全入门

第一章 Android 安全入门 作者:Aditya Gupta 译者:飞龙 协议:CC BY-NC-SA 4.0 Android 是当今最流行的智能手机操作系统之一。 随着人气的增加,它存在很多安全风险,这些风险不可避免地被...

apachecn_飞龙
2016/12/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0
Permissions 0777 for ‘***’ are too open

异常显示: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: UNPROTECTED PRIVATE KEY FILE! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ......

李玉长
今天
5
0
区块链10年了,还未落地,它失败了吗?

导读 几乎每个人,甚至是对通证持怀疑态度的人,都对区块链的技术有积极的看法,因为它有可能改变世界。然而,区块链技术问世已经10年了,我们仍然没有真正的用上区块链技术。 几乎每个人,甚...

问题终结者
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部