2017-02-13 7 views
1

Я использую следующий код контакта выборки приложения я получаю Android Runtime: фатальное исключения: главный ошибки в строке нет 17.Получение Android Runtime: Fatal Exception

package com.example.alpesh_pc.contactlist; 

import android.app.Activity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.widget.Toast; 

public class MainActivity extends Activity 
{ 
    public Cursor cursor; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     cursor=this.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
     if(cursor.getCount()>0) 
     { 
      Toast.makeText(this, "Seccess", Toast.LENGTH_LONG).show(); 
     } 

    } 
} 

ниже не мой LogCat

Е/AndroidRuntime: неустранимый: Основной процесс: com.example.alpesh_pc.contactlist, ПИД: 3833 java.lang.RuntimeException: Невозможно запустить активность ComponentInfo {com.example.alpesh_pc.contactlist/ком. examp le.alpesh_pc.contactlist.MainActivity}: java.lang.SecurityException: Permission Denial: открытие провайдера com.android.providers.contacts.ContactsProvider2 из ProcessRecord {6970ad0 3833: com.example.alpesh_pc.contactlist/u0a67} (pid = 3833, UID = 10067) требует android.permission.READ_CONTACTS или android.permission.WRITE_CONTACTS на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2646) на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2707) на android.app.ActivityThread.-wrap12 (ActivityThread.java) на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1460) на android.os.Handler.dispatchMessage (Handler.java:102) на android .os.Looper.loop (Looper.java:154) на android.app.Activi tyThread.main (ActivityThread.java:6077) at java.lang.reflect.Method.invoke (собственный метод) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:865) at com .android.internal.os.ZygoteInit.main (ZygoteInit.java:755) Вызвано: java.lang.SecurityException: Разрешение отказа: открытие провайдера com.android.providers.contacts.ContactsProvider2 из ProcessRecord {6970ad0 3833: com.example .alpesh_pc.contactlist/u0a67} (pid = 3833, uid = 10067) требует android.permission.READ_CONTACTS или android.permission.WRITE_CONTACTS на android.os.Parcel.readException (Parcel.java:1683) на android.os. Parcel.readException (Parcel.java:1636) at android.app.ActivityManagerProxy.getContentProvider (ActivityManagerNative.java:4169)в android.app.ActivityThread.acquireProvider (ActivityThread.java:5434) в android.app.ContextImpl $ ApplicationContentResolver.acquireUnstableProvider (ContextImpl.java:2267) в android.content.ContentResolver.acquireUnstableProvider (ContentResolver.java:1515) на android.content.ContentResolver.query (ContentResolver.java:514) в android.content.ContentResolver.query (ContentResolver.java:472) в com.example.alpesh_pc.contactlist.MainActivity.onCreate (MainActivity.java: 17) на android.app.Activity.performCreate (Activity.java:6662) на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1118) на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2599) at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2707) at android.app.ActivityThread.-wrap12 (ActivityThread.java) at android.app.ActivityThread $ H.handleMessage (ActivityThread .java: 1460) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:154) на android.app.ActivityThread.main (ActivityThread.java : 6077) at java.lang.reflect.Method.invoke (собственный метод) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:865) at com.android.internal.os. ZygoteInit.main (ZygoteInit.java:755) Приложение termi NAT,.

+0

Пожалуйста, поделитесь своим регистрационным номером –

+0

, пожалуйста, проверьте вопрос снова, я изменил его с помощью logcat. Спасибо. @TahmidRahman –

+0

, пожалуйста, проверьте мои ans –

ответ

0

проверка разрешения на Manifest.xml, а также разрешение положить время выполнения для уровня апи 23 или больше, как:

для манифеста файла:

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

и для проверки на работоспособность:

permission_tutorial

+0

Я уже добавил это разрешение в файл манифеста. –

+0

проверить лицензионную ссылку и поместить это в свой код –

1

Добавить разрешение <uses-permission android:name="android.permission.READ_CONTACTS" /> в Android манифеста XML

+0

Я уже добавил это разрешение в файл манифеста. –

0

Я думаю, что вы используете Marshmallow OS (Android Version 6) или любое устройство, которое требует проверки разрешения времени исполнения.

Вы попробовали?

// Here, thisActivity is the current activity 
if (ContextCompat.checkSelfPermission(thisActivity, 
      Manifest.permission.READ_CONTACTS) 
    != PackageManager.PERMISSION_GRANTED) { 

// Should we show an explanation? 
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity, 
     Manifest.permission.READ_CONTACTS)) { 

    // Show an explanation to the user *asynchronously* -- don't block 
    // this thread waiting for the user's response! After the user 
    // sees the explanation, try again to request the permission. 

}else{ 

    // No explanation needed, we can request the permission. 

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

    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an 
    // app-defined int constant. The callback method gets the 
    // result of the request. 
    } 
} 

и обрабатывать разрешения ответа на запрос

@Override 
public void onRequestPermissionsResult(int requestCode, 
     String permissions[], int[] grantResults) { 
     switch (requestCode) { 
      case MY_PERMISSIONS_REQUEST_READ_CONTACTS: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
      && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

      // permission was granted, yay! Do the 
      // contacts-related task you need to do. 

     } else { 

      // permission denied, boo! Disable the 
      // functionality that depends on this permission. 
     } 
     return; 
    } 

    // other 'case' lines to check for other 
    // permissions this app might request 
    } 
} 

Тем не менее, если какой-либо путаницы остается, вы можете иметь вид here.

+0

MY_PERMISSIONS_REQUEST_READ_CONTACTS не может разрешить символ –

+0

, это «requestCode», вы можете инициализировать в своей деятельности, например «public static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 0;» здесь 0 не является обязательным, вы можете установить любой 'int' –