SecurityException Пермиссион Дениаль, согласившись на контакты

Я хочу показать контакты повестки дня, но закрывают для меня приложение к мгновению. Не, где - ошибка:

public class Main extends ListActivity {

    TextView txt;
    ListView list;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
         txt = (TextView)findViewById(R.id.contactName);
        list = (ListView) findViewById(android.R.id.list);
        showContacts();
}

protected void showContacts(){

        String[] projection = new String[]{
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER,
                ContactsContract.CommonDataKinds.Phone._ID;}

        int[] to = new int[]{R.id.contactID,R.id.contactName};
        txt.setText(ContactsContract.PhoneLookup.CONTENT_FILTER_URI.toString());
        //Uri contacts = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        Uri contacts = ContactsContract.Contacts.CONTENT_URI;
        //Uri contacts = Uri.parse("content://contacts/people");
        Cursor c = getContentResolver().query(contacts,projection,null,null,null);
        ListAdapter sca = new SimpleCursorAdapter(Main.this,android.R.layout.activity_list_item,c,projection,to); 
list.setAdapter(sca); 

Ошибка:

ФАТАЛЬНЫЙ EXCEPTION: main Process: es.exitae.listadocontactos7, PID: 4184 java.lang. RuntimeException: Unable to start activity ComponentInfo { es.exitae.listadocontactos7/es.exitae.listadocontactos7. Main }: java.lang. SecurityException: Permission Denial: opening provider com.android.providers.contacts. ContactsProvider2 from ProcessRecord { 98c9152 4184:es.exitae.listadocontactos7/u0a73 } (pid=4184, uid=10073) requires android.permission. READ_CONTACTS or android.permission. WRITE_CONTACTS at android.app. ActivityThread.performLaunchActivity (ActivityThread.java:2665)

Ошибка продолжает, я не понимаю много, но из-за небольшого количества, что я вижу, дело в том, что он говорит мне, чтобы он добавил разрешения к android manifest, и это уже я считаю это сделанным

Восток - мой android manifest:

<uses-permission android:name="android.permission.READ_CONTACTS" ></uses-permission>
<uses-permission android:name="android.permission.WRITE_CONTACTS" ></uses-permission>
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".Main">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

</application>
3
задан 07.01.2017, 22:50
0 ответов

Начиная с Android 6.0 (уровень API 23), пользователи предоставляют разрешения apps пока они работают, не, когда они устанавливают app. Этот подход упрощает процесс установки app, так как пользователь не нуждается в том, чтобы предоставить разрешения, когда он устанавливает или обновляет app. Также предложи контроль самому большему пользователю на функциональности app; например, пользователь мог бы предпочитать предоставлять доступ к этой app камеры, но не в расположение устройства. Пользователь может отменять разрешения в любом моменте с экрана конфигурации app.

Если ты используешь какое-то опасное разрешение, ты будешь должен просить разрешение во время выполнения, чтобы мочь соглашаться на Вашу функциональность, в самом деле Андроид Студио пометит тебя как ошибка, если ты согласишься на эти разрешения, не делая проверки раньше.

Список опасных разрешений:

READ_CALENDAR
WRITE_CALENDAR
CAMERA
READ_CONTACTS
WRITE_CONTACTS
GET_ACCOUNTS
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
RECORD_AUDIO
READ_PHONE_STATE
CALL_PHONE
READ_CALL_LOG
WRITE_CALL_LOG
ADD_VOICEMAIL
USE_SIP
PROCESS_OUTGOING_CALLS
BODY_SENSORS
SEND_SMS
RECEIVE_SMS
READ_SMS
RECEIVE_WAP_PUSH
RECEIVE_MMS
READ_EXTERNAL_STORAGE
WRITE_EXTERNAL_STORAGE

https://developer.android.com/training/permissions/requesting.html

Моя рекомендация состоит в том, чтобы использовать какой-то книжный магазин, который облегчает вещи, будучи должен подтверждать, согласился ли пользователь, его отрицал, он дал ему вновь не видеть...

Здесь я оставляю какие-то:

https://github.com/Karumi/Dexter

https://github.com/googlesamples/easypermissions

2
ответ дан 03.12.2019, 17:50