主要通过PackageManager中的方法

代码:

public class InstallApps extends ListActivity {       HashMap map=new HashMap();    List packagelist=new ArrayList();    List systemApp=new ArrayList();    protected void onCreate(android.os.Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        PackageManager pm=getPackageManager();      //List mPackageinfo=  pm.getInstalledPackages(PackageManager.GET_PERMISSIONS);       Intent query=new Intent(Intent.ACTION_MAIN);       query.addCategory("android.intent.category.LAUNCHER");        List 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(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://my.oschina.net/zhuzihasablog/blog/107694

更多相关文章

  1. android拍照,调用系统相册,相片上传
  2. 如何在Android 11 中正确请求位置权限?以及Android 8 - 11位置权
  3. 【Android 系统开发】Android JNI 之 JNIEnv 解析
  4. android M上可能需要开发者注意的权限大全
  5. Android系统启动流程 -- bootloader
  6. Android去除系统自带动画的两种方法
  7. 使用Java代码在应用层获取Android系统属性
  8. 【Android】win10操作系统下Android开发环境配置
  9. Android点击返回按钮两次退出系统

随机推荐

  1. Android(安卓)桌面请求录屏权限不唤起App
  2. Android即时通讯
  3. Android(安卓)studio中TextView改变字体
  4. Android(Java)加载SO文件
  5. android 图片压缩,bitmap压缩总结
  6. Android(安卓)淘宝APP 开发入门篇(一)
  7. [置顶] android人脸识别——HowOld测测你
  8. Android应用开发提高系列(1)――《Practica
  9. Android横屏开发的老梗---Fragment切换混
  10. 苹果发大招 Android用户轻松迁移ios