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

来源:互联网 发布:汉口办公软件培训班 编辑:程序博客网 时间:2024/06/06 09:04

主要通过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://my.oschina.net/zhuzihasablog/blog/107694

0 0
原创粉丝点击