文档章节

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

LiSteven
 LiSteven
发布于 2013/02/02 17:56
字数 290
阅读 5404
收藏 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开发_android权限

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangty0223/article/details/9389879 访问登记属性 android.permission.ACCESSCHECKINPROPERTIES ,读取或写...

张腾元_Ternence
2013/07/20
0
0
Android AndroidManifest 清单文件以及权限详解

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

程序袁_绪龙
2015/01/13
0
0
Android 中各种权限深入体验及详解

一. 权限(permission) 权限用来描述是否拥有做某件事的权力。Android系统中权限分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。系统...

长平狐
2012/09/03
3.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

docker搞个wordpress

1.先把wordpress的镜像下载下来 docker pull wordpress 2.下载mysql docker pull mysql:lastest 3.启动mysql docker run --name blog -e root -d mysql:5.7 docker run --name some-mysql -e......

无极之岚
7分钟前
0
0
【宇润日常疯测-005】PHP 中的 clone 和 new 性能比较

clone和new本不应该放在一起比较,它们的作用是不同的。但可能有一些场景下,可以用clone也可以用new,那么这时候我们选哪个呢? 我编写了两个测试,第一个是声明一个空类,第二个是带构造方...

宇润
8分钟前
0
1
点击按钮弹出类似IOS 底部 dialog

implementation 'com.baoyz.actionsheet:library:1.1.7' 然后设置按钮点击监听,,调用下列代码即可 ActionSheet.createBuilder(this, getSupportFragmentManager()) ......

lanyu96
11分钟前
1
0
专访阿里云专有云马劲,一个理性的理想主义者

“我的故事都是和团队技术相关的,自己还真没有什么引人入胜的故事。”当马劲被问到能不能多分享些个人经历故事时他笑着说,我们就干脆怀着好奇聊了聊他和阿里云专有云一路走来的故事。 马劲...

阿里云官方博客
43分钟前
1
0
java环形缓冲区

import java.util.ArrayList;import java.util.List;/** * * 环形缓冲区<br/> * 一. 写数据:<br/> * 1. push: 当数据已写满时返回false,否则可以正常写入返回true<br/>......

whoisliang
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部