1. 程式人生 > >android studio api 23 android 6.0 requires android.permission.READ_CONTACTS or android.permiss

android studio api 23 android 6.0 requires android.permission.READ_CONTACTS or android.permiss

Causedby: java.lang.SecurityException:PermissionDenial: opening provider com.android.providers.contacts.ContactsProvider2fromProcessRecord{49af1fb14363:com.example.gszczepanski.eduandroid/u0a59}(pid=14363, uid=10059) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
在manifest 檔案中已經添加了user-permission 
<uses-permission android:name="android.permission.WRITE_CONTACTS"></uses-permission>
    <uses-permission android:name="android.permission.READ_CONTACTS"></uses-permission>
<span style="color:#2e3133;">但還是報了前面出現的錯誤</span><pre class="default prettyprint prettyprinted" style="margin-top: 0px; margin-bottom: 1em; padding: 5px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial; font-size: 13px; width: auto; max-height: 600px; overflow: auto; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; word-wrap: normal; background-color: rgb(238, 238, 238);"><code style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif; white-space: inherit;"><span style="color:#ff0000;"><span class="pln" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">requires android</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">permission</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">READ_CONTACTS </span><span class="kwd" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">or</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;"> android</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">permission</span><span class="pun" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">.</span><span class="pln" style="margin: 0px; padding: 0px; border: 0px; border-image-source: initial; border-image-slice: initial; border-image-width: initial; border-image-outset: initial; border-image-repeat: initial;">WRITE_CONTACTS</span></span></code>
錯誤提示的意思是:需要使用者自己去新增對contacts 的授權,而不是讓系統給授權,這都是android 6.0及以上的裝置上才出現的問題,google 主要是處於安全的考慮,才新增的機制;
解決的方法是:彈出授權提示框,提醒使用者授權;
程式碼如下:
 if (ActivityCompat.checkSelfPermission(this, mPermission[0])
                != MockPackageManager.PERMISSION_GRANTED ||
                ActivityCompat.checkSelfPermission(this, mPermission[1])
                        != MockPackageManager.PERMISSION_GRANTED
                )
//授權(如果沒有授權,就彈出提示,讓使用者授權)
            ActivityCompat.requestPermissions(this,
                    mPermission, REQUEST_CONTACTS);
希望對你有幫助;