Intereting Posts
QPython или Kivy для программирования на Android с Python – создание устанавливаемого apk Студия Android / Gradle build не работает в выпуске: не удалось определить зависимости задачи: app: crashlyticsStoreDeobsRelease ' Получить размер представления контента в onCreate NoClassDefFondError в Android … но класс находится в одной банке, включенной в путь класса Вычислить разницу во времени в Android Создание представлений программным способом с использованием XML на Android Java.lang.NoClassDefFoundError: com.google.android.gms.R $ стиль для Android Android 4.0, текст на панели действий НИКОГДА не отображается Элемент должен быть объявлен ошибкой для формы тега Загрузка существующего .html-файла с помощью android WebView Что вызывает Google AdMob для утечки ServiceConnection? Аспектно-ориентированное программирование в android Ошибка размещения макета Android: «Идентификатор ресурса <res_id> не относится к типу STYLE (вместо attr)" В onTouchEvent ACTION_UP не работает WebView и Cookies на Android

Permission.READ_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 

Мой файл манифеста выглядит следующим образом:

 <?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> ? <?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> 

Я пытаюсь посмотреть мои контакты:

  Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 

Я попытался добавить <uses-permission android:name="android.permission.READ_CONTACTS" /> или android:permission="android.permission.READ_CONTACTS" в <application> или <activity> , но оба не работали ,

У меня заканчиваются варианты, кто-нибудь знает, что мне здесь не хватает?

Solutions Collecting From Web of "Permission.READ_CONTACTS, похоже, не работает"

<uses-permission> должен содержаться в элементе <manifest> . См. « Структура файла манифеста» . Поэтому попытка поместить его в <application> или <activity> не будет работать. Движение отчаяния: попробуйте переместить <uses-sdk> перед <application>

 <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> 

Также, если вы можете протестировать без других разрешений, удалите их.

EDIT: можете ли вы проверить, является ли это вашей верхней линией в файле манифеста:

 <?xml version="1.0" encoding="utf-8"?> 

Я полностью застрял на этом, пока не прочитал эту статью о том, как обрабатываются разрешения, начиная с SDK 23. Критический намек:

Если для targetSdkVersion приложения установлено значение менее 23. Предполагается, что приложение еще не протестировано с новой системой разрешений и переключится на прежнее поведение: пользователь должен принимать все разрешения во время установки, и все они будут предоставлены После установки!

Я открыл файл gradle.build и изменил targetSdkVersion 23 на targetSdkVersion 22 , и теперь все отлично работает! В итоге я найду время для создания новой системы разрешений и вернусь к targetSdkVersion 23 , что, вероятно, является более правильным ответом. Это временный ярлык.

У меня была такая же проблема, и ни одно из решений, которые я прочитал, не помогло решить проблему, пока я не добавил разрешение WRITE_EXTERNAL_STORAGE вместе с разрешением READ_CONTACTS .

 <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Попробуйте это в своем методе создания

ActivityCompat.requestPermissions (this, new String [] {Manifest.permission.READ_CONTACTS}, 1);

Ничто из перечисленного не помогло. Решение довольно простое. Вам понадобится запрос разрешения времени выполнения.

С или без размещения разрешения в манифесте, вам нужно будет запросить это разрешение у Пользователя «на лету». if( getApplicationContext().checkSelfPermission( Manifest.permission.READ_CONTACTS ) != PackageManager.PERMISSION_GRANTED ) ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.READ_CONTACTS}, resultValue);

Только после этого вы сможете запросить номер телефона телефона / имя и т. Д.

Сегодня я столкнулся с этой проблемой, и ни одна из вышеперечисленных исправлений не работала для меня.

Какая проблема была связана с моим Eclipse. То, что я написал в manifest.xml и что было на вкладке « Permissions », не было одинаковым. У меня было разрешение READ_CONTACTS в моем manifest.xml , но READ_PROFILE был на своем месте под вкладкой моего разрешения.

Я знаю, что это старый поток, но, надеюсь, если у кого-то будет такая же проблема, я бы это наткнулся на это.

Благодаря!