Dan*_*lvd 17 permissions android android-contacts
我正在开发一个浏览用户联系人的简单应用程序.不幸的是我一直收到以下错误:
java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.HtcContactsProvider2 uri content://com.android.contacts/contacts from pid=27455, uid=10171 requires android.permission.READ_CONTACTS
Run Code Online (Sandbox Code Playgroud)
我的清单文件如下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.helloMaps"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="true">
<uses-library android:name="com.google.android.maps" />
<activity android:name=".MapsActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
我试图通过以下方式查看我的联系人:
Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
Run Code Online (Sandbox Code Playgroud)
我试图添加<uses-permission android:name="android.permission.READ_CONTACTS" />或android:permission="android.permission.READ_CONTACTS"到<application>或<activity>,但都没有奏效.
我的选择已经用完了,有人知道我在这里缺少什么吗?
hov*_*yan 17
的<uses-permission>应包含在<manifest>元件.请参阅清单文件的结构.因此,尝试将其放入<application>或<activity>将无法正常工作.绝望之举:尝试<uses-sdk>前移动<application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
Run Code Online (Sandbox Code Playgroud)
此外,如果您可以在没有其他权限的情
编辑:请你检查一下你的清单文件中是否是你的TOP行:
<?xml version="1.0" encoding="utf-8"?>
Run Code Online (Sandbox Code Playgroud)
以上都没有帮助。解决方法很简单。您需要一个运行时权限请求。
无论是否在您的清单中放置许可,您都需要即时向用户请求该许可。
if( getApplicationContext().checkSelfPermission( Manifest.permission.READ_CONTACTS ) != PackageManager.PERMISSION_GRANTED )
ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_CONTACTS}, resultValue);
Run Code Online (Sandbox Code Playgroud)
只有在批准后,您才能查询联系人电话号码/姓名等。
小智 6
在你的创建方法中试试这个
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_CONTACTS},1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45542 次 |
| 最近记录: |