动态权限对照的参考如下;开启组中其中一个权限的授权则组内其他授权也会被打开;
//需要在6.0后做动态权限的权限组,其中开启某一权限组中一个则默认开启组中其他权限;;; <!-- CALENDAR--> <uses-permission android:name="android.permission.READ_CALENDAR"/> <uses-permission android:name="android.permission.WRITE_CALENDAR"/> <!-- CAMERA--> <uses-permission android:name="android.permission.CAMERA"/> <!-- CONTACTS--> <uses-permission android:name="android.permission.READ_CONTACTS"/> <uses-permission android:name="android.permission.WRITE_CONTACTS"/> <uses-permission android:name="android.permission.GET_ACCOUNTS"/> <!-- LOCATION--> <uses-permission android:name="android.permission.access_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <!-- PHONE--> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.CALL_PHONE"/> <uses-permission android:name="android.permission.READ_CALL_LOG"/> <uses-permission android:name="android.permission.WRITE_CALL_LOG"/> <uses-permission android:name="android.permission.USE_Sip"/> <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> <!-- SENSORS--> <uses-permission android:name="android.permission.BODY_SENSORS"/> <!-- SMS--> <uses-permission android:name="android.permission.READ_SMS"/> <uses-permission android:name="android.permission.SEND_SMS"/> <uses-permission android:name="android.permission.RECEIVE_SMS"/> <uses-permission android:name="android.permission.RECEIVE_MMS"/> <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH"/> <!-- STORAGE--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>1: 如果在程序的所需权限中有包含如下的权限,则需要使用动态权限来处理,以免会出现异常的情况;
下面的例子:
//相等则已经授权,不相等则没有授权,需要请授权; if(ContextCompat.checkSelfPermission(this,Manifest.permission.READ_CONTACTS ) != PackageManager.PERMISSION_GRANTED) { //请求授权 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_CONTACTS},1); }else{ //接着做自己的事情 getContacts(); }2: 授权申请的时候会产生一个回调函数,如下:
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode){ case 1: if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //接着做自己的事情 getContacts(); }else { Toast.makeText(ConProActivity.this, "权限被拒!", Toast.LENGTH_SHORT).show(); } break; } }下面是利用ContentResolver来获取系统的共享数据资源,电话号,短息,图片等等;
private void getContacts() { ContentResolver contentResolver = getContentResolver(); Cursor cursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null); if(cursor!=null) { while (cursor.moveToNext()){ int nameIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME); int numIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); String name = cursor.getString(nameIndex); String num = cursor.getString(numIndex); Toast.makeText(ConProActivity.this, name+", "+num, Toast.LENGTH_SHORT).show(); } cursor.close(); } }新闻热点
疑难解答