public static ArrayList<ApkPermission> permissions( Context context, ArrayList<String> permissionArray) { PackageManager pm = context.getPackageManager(); CharSequence csPermissionGroupLabel; CharSequence csPermissionLabel; List<PermissionGroupInfo> lstGroups = pm.getAllPermissionGroups(0); ArrayList<ApkPermission> list = new ArrayList<>(); if (permissionArray != null) { for (int i = 0; i != permissionArray.size(); i++) { String permission = permissionArray.get(i); for (PermissionGroupInfo pgi : lstGroups) { try { List<PermissionInfo> lstPermissions = pm.queryPermissionsByGroup(pgi.name, 0); for (PermissionInfo pi : lstPermissions) { if (pi.name.equals(permission)) { csPermissionLabel = pi.loadLabel(pm); csPermissionGroupLabel = pgi.loadLabel(pm); list.add( new ApkPermission( csPermissionGroupLabel.toString(), csPermissionLabel.toString())); } } } catch (Exception ex) { ex.printStackTrace(); } } } Collections.sort( list, new Comparator<ApkPermission>() { @Override public int compare(ApkPermission lhs, ApkPermission rhs) { return lhs.getName().compareTo(rhs.getName()); } }); } return list; }
public static void printAllPermission(Context context) { PackageManager pm = context.getPackageManager(); CharSequence csPermissionGroupLabel; CharSequence csPermissionLabel; List<PermissionGroupInfo> lstGroups = pm.getAllPermissionGroups(PackageManager.GET_PERMISSIONS); for (PermissionGroupInfo pgi : lstGroups) { csPermissionGroupLabel = pgi.loadLabel(pm); Log.d( "ldx", "PermissionGroup: " + pgi.name + " [" + csPermissionGroupLabel.toString() + "]"); try { List<PermissionInfo> lstPermissions = pm.queryPermissionsByGroup(pgi.name, 0); for (PermissionInfo pi : lstPermissions) { csPermissionLabel = pi.loadLabel(pm); Log.d( "ldx", " PermissionChild" + pi.name + " [" + csPermissionLabel.toString() + "]"); } } catch (Exception ex) { ex.printStackTrace(); } } }
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main3); mPm = getPackageManager(); Intent i = getIntent(); String title = i.getStringExtra("title"); final String PackageName = title.substring(8); ExpandableListView list = (ExpandableListView) findViewById(R.id.permissionList); mGroupData = new ArrayList<Map<String, String>>(); mChildData = new ArrayList<List<Map<String, String>>>(); String permissionName; String applicationLabel; String packageName; PackageInfo pi = null; ApplicationInfo ai = null; applicationLabel = PackageName; int packageVersionCode; String packageVersionName; String AppName; Drawable icon; long lastUpdate; int system; int install; try { pi = mPm.getPackageInfo(PackageName, PackageManager.GET_META_DATA); try { icon = mPm.getApplicationIcon(PackageName); // ///icon 빼기 } catch (PackageManager.NameNotFoundException e) { icon = mPm.getDefaultActivityIcon(); } ImageView imageView = (ImageView) findViewById(android.R.id.icon); imageView.setImageDrawable(icon); AppName = pi.packageName; packageVersionCode = pi.versionCode; packageVersionName = pi.versionName; Log.v("XXXX7", "name: " + packageVersionName); ai = mPm.getApplicationInfo(PackageName, PackageManager.GET_META_DATA); // //라벨 빼오기 String labelName = mPm.getApplicationLabel(ai).toString(); ((TextView) findViewById(R.id.curAppName)).setText(labelName); // Appname layout 연결 ((TextView) findViewById(R.id.packagea)).setText(AppName); // Appname layout 연결 ((TextView) findViewById(R.id.curAppversion)) .setText(packageVersionCode + " / " + packageVersionName); } catch (Exception ex) { packageVersionCode = 0; packageVersionName = "n/a"; // Log.e("PM", "Error fetching app version"); } /////////////////////////////////////////////////////////////////////////////////////////////////// manageButton = (ImageButton) findViewById(R.id.application_detail_manage_button); manageButton.setImageResource(R.drawable.ic_menu_manage); manageButton.setOnClickListener( new View.OnClickListener() { public void onClick(View v) { if (Build.VERSION.SDK_INT >= 9) { try { Intent i = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS"); i.addCategory(Intent.CATEGORY_DEFAULT); i.setData(Uri.parse("package:" + PackageName)); startActivity(i); } catch (ActivityNotFoundException anfe) { Intent i = new Intent("android.settings.APPLICATION_DETAILS_SETTINGS"); i.addCategory(Intent.CATEGORY_DEFAULT); startActivity(i); } } else { Toast.makeText( MarketPlay.this, context.getText(R.string.application_detail_manager_unavailable), Toast.LENGTH_LONG) .show(); } } }); /////////////////////////////////////////////////////////////////////////////////////////////////////////// try { pi = mPm.getPackageInfo(PackageName, PackageManager.GET_PERMISSIONS); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } mChildData.clear(); mGroupData.clear(); // int count = 0; // try { // for (String key : pi.requestedPermissions) { // if (key.startsWith("android.permission.")) count++; // } // curGroupMap.put(NAME, applicationLabel + "(" + count + ")"); // Log.v("XXXX7", "count : " + count); // } catch (NullPointerException e) { // curGroupMap.put(NAME, applicationLabel + "(" + 0 + ")"); // Log.v("XXXX7", "///count : " + count); // } // curGroupMap.put(DESCRIPTION, packageVersionName); // Log.v("XXXX7", "Description : " + packageVersionName); // curGroupMap.put(PACKAGENAME, PackageName); // Log.v("XXXX7", "packageName : " + PackageName); // // mGroupData.add(curGroupMap); Log.v("1", "" + mChildData); Log.v("2", "" + mChildData); try { Log.v("3", "" + mChildData); if (pi.requestedPermissions != null) { for (String key : pi.requestedPermissions) { try { if (!(key.startsWith("android.permission."))) continue; Log.d("BBB", key); PermissionInfo pinfo = mPm.getPermissionInfo(key, PackageManager.GET_META_DATA); Map<String, String> curGroupMap = new HashMap<String, String>(); Map<String, String> curChildMap = new HashMap<String, String>(); List<Map<String, String>> children = new ArrayList<Map<String, String>>(); CharSequence label = pinfo.loadLabel(mPm); CharSequence desc = pinfo.loadDescription(mPm); curGroupMap.put(NAME, (label == null) ? pinfo.name : label.toString()); Log.d("AAA", label.toString()); curGroupMap.put(SECURITYLEVEL, String.valueOf(pinfo.protectionLevel)); curChildMap.put(PERMISSION, key); curChildMap.put(DESCRIPTION, (desc == null) ? "" : desc.toString()); curChildMap.put(SECURITYLEVEL, String.valueOf(pinfo.protectionLevel)); children.add(curChildMap); mGroupData.add(curGroupMap); Log.d("CCC", "" + mGroupData); mChildData.add(children); Log.d("DDD", "" + mChildData); } catch (PackageManager.NameNotFoundException e) { Log.i(TAG, "Ignoring unknown permission "); continue; } } } else { ((TextView) findViewById(R.id.iff)).setText(" App 의 요구 권한 이 없습니다 ^^ "); // mGroupData.add(curGroupMap); // mChildData.add(children); } } catch (NullPointerException e) { Log.i(TAG, "Ignoring unknown permission "); } // SimpleAdapter adapter = new SimpleAdapter(this, children, // R.layout.permission_list_item, new String[]{"", "Name", "Description"}, new // int[]{R.id.listviewpermissiontext, R.id.text1, R.id.text2}); // if (pi.requestedPermissions != null) { // permissionList = (ListView) findViewById(R.id.permissionList); // permissionList.setAdapter(adapter); // } else { // ((TextView) findViewById(R.id.iff)).setText(" App 의 요구 권한 이 없습니다 ^^ "); // } PermissionAdapter mAdapter = new PermissionAdapter( MarketPlay.this, mGroupData, R.layout.marketplay_item, new String[] {NAME}, new int[] {R.id.text1}, mChildData, R.layout.marketplay_item_child, new String[] {DESCRIPTION, PERMISSION}, new int[] {R.id.text1, R.id.text2}); list.setAdapter(mAdapter); Log.v("BBB", "" + mChildData); // permissionList = (ListView)findViewById(R.id.permissionL); // permissionList.setAdapter(adapter); ///권한들 .. layout }