获取应用所需权限(只能获取在AndroidManifest.xml文件中声明的权限,像手机设置-》权限管理-》应用-》权限列表这个里面的权限并不是都能获取,比如读取应用列表的权限就获取不到)
PackageInfo pkgInfo = packageManager.getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS); String sharedPkgList[] = pkgInfo.requestedPermissions; StringBuilder sb = new StringBuilder(); for(int i=0;i<sharedPkgList.length;i++) { String permName = sharedPkgList[i]; PermissionInfo tmpPermInfo = packageManager.getPermissionInfo(permName, 0); sb.append(i + "-" + permName + "\n"); sb.append(i + "-" + tmpPermInfo.loadLabel(packageManager).toString() + "\n"); sb.append(i + "-" + tmpPermInfo.loadDescription(packageManager).toString() + "\n"); }
虽说READ_PHONE_STATE和CALL_PHONE属于同一个权限组,只动态申请READ_PHONE_STATE权限还是不能打电话的,还是需要动态申请CALL_PHONE权限
if(ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CALL_PHONE},101); }else{ Uri uriTel=Uri.parse("tel:10086"); Intent intentTel=new Intent(); intentTel.setAction(Intent.ACTION_CALL); intentTel.setData(uriTel); startActivity(intentTel); }
危险权限了解一下:
group:android.permission-group.CONTACTS
permission:android.permission.WRITE_CONTACTS
permission:android.permission.GET_ACCOUNTS
permission:android.permission.READ_CONTACTS
group:android.permission-group.PHONE
permission:android.permission.READ_CALL_LOG
permission:android.permission.READ_PHONE_STATE
permission:android.permission.CALL_PHONE
permission:android.permission.WRITE_CALL_LOG
permission:android.permission.USE_SIP
permission:android.permission.PROCESS_OUTGOING_CALLS permission:com.android.voicemail.permission.ADD_VOICEMAIL
group:android.permission-group.CALENDAR
permission:android.permission.READ_CALENDAR
permission:android.permission.WRITE_CALENDAR
group:android.permission-group.CAMERA
permission:android.permission.CAMERA
group:android.permission-group.SENSORS
permission:android.permission.BODY_SENSORS
group:android.permission-group.LOCATION
permission:android.permission.ACCESS_FINE_LOCATION
permission:android.permission.ACCESS_COARSE_LOCATION
group:android.permission-group.STORAGE
permission:android.permission.READ_EXTERNAL_STORAGE
permission:android.permission.WRITE_EXTERNAL_STORAGE
group:android.permission-group.MICROPHONE
permission:android.permission.RECORD_AUDIO
group:android.permission-group.SMS
permission:android.permission.READ_SMS
permission:android.permission.RECEIVE_WAP_PUSH
permission:android.permission.RECEIVE_MMS
permission:android.permission.RECEIVE_SMS
permission:android.permission.SEND_SMS
permission:android.permission.READ_CELL_BROADCASTS