標籤:tco 讀寫權限 版本 except android ack ons rom tle
在SDK23也就是Android6.0.1裡編寫調用系統通訊錄讀寫權限的程式,在AndroidManifest.xml中,已經配置了
<uses-permission android:name="android.permission.READ_CONTACTS"/><uses-permission android:name="android.permission.WRITE_CONTACTS"/>
但是運行中仍然出現異常,如下所示:
java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2 from ProcessRecord (pid=28104, uid=10176) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
原因是SDK23對應用程式許可權做出了改動,有兩種解決辦法:
①使用SDK22開發,並且運行此程式的android虛擬機器或者是手機的系統6.0以下。
②使用ContentResolver之前,加入如下代碼,進行許可權校正。
首先進行REQUESTCode:REQUEST_CODE_ASK_PERMISSONS常量的聲明。
final private int REQUEST_CODE_ASK_PERMISSIONS = 123;
然後再調用ContentResolver之前,進行許可權校正
int hasWriteContactsPermisson = checkSelfPermission(android.Manifest.permission.READ_CONTACTS);if(hasWriteContactsPermisson != PackageManager.PERMISSION_GRANTED){ requestPermissions(new String[] {Manifest.permission.WRITE_CONTACTS}, REQUEST_CODE_ASK_PERMISSIONS); return;}//使用ContentResolver尋找連絡人資料Cursor cursor = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI, null,null,null,null);
在小米手機上,運行結果:
關於sdk>=23的android版本許可權的問題