2016-03-26 15 views
-1

Dies ist nur eine einfache App enthält eine Schaltfläche, die die Kontaktdaten erhält ,, Hier ist mein Code für die Schaltfläche und ich habe die Erlaubnis hinzugefügt, aber meine App stoppt, gib mir nur ein paar Hinweise was das Problem sein könnte, kann ich die Frage nicht veröffentlichen, wenn ich einige Details hinzufügen, so versuche ich, mehr Worte für diesen AbschnittApp hat aufgehört, weiß nicht, warum

public void GetContacts(View view) { 

    Cursor cursor=getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null); 
    while (cursor.moveToNext()) 
    { 
     int nameIndex=cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME); 
     String name= cursor.getString(nameIndex); 
     Log.d("mainActivityContacts",name); 
    } 
} 

hier auch die Log-Katze

03-26 16:41:21.794 5019-5019/com.example.hp250.provider E/AndroidRuntime: 
FATAL EXCEPTION: main 
    Process: com.example.hp250.provider, PID: 5019 
    java.lang.IllegalStateException: Could not execute method for android:onClick 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:275) 
     at android.view.View.performClick(View.java:5198) 
     at android.view.View$PerformClick.run(View.java:21147) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5417) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    Caused by: java.lang.reflect.InvocationTargetException 
     at java.lang.reflect.Method.invoke(Native Method) 
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270) 
     at android.view.View.performClick(View.java:5198)  
     at android.view.View$PerformClick.run(View.java:21147)  
     at android.os.Handler.handleCallback(Handler.java:739)  
     at android.os.Handler.dispatchMessage(Handler.java:95)  
     at android.os.Looper.loop(Looper.java:148)  
     at android.app.ActivityThread.main(ActivityThread.java:5417)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
    Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2 from ProcessRecord{b0dfc36 5019:com.example.hp250.provider/u0a75} (pid=5019, uid=10075) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS 
     at android.os.Parcel.readException(Parcel.java:1599) 
     at android.os.Parcel.readException(Parcel.java:1552) 
     at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:3550) 
     at android.app.ActivityThread.acquireProvider(ActivityThread.java:4778) 
     at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2018) 
     at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1468) 
     at android.content.ContentResolver.query(ContentResolver.java:475) 
     at android.content.ContentResolver.query(ContentResolver.java:434) 
     at com.example.hp250.provider.MainActivity.GetContacts(MainActivity.java:21) 
     at java.lang.reflect.Method.invoke(Native Method)  
     at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)  
     at android.view.View.performClick(View.java:5198)  
     at android.view.View$PerformClick.run(View.java:21147)  
     at android.os.Handler.handleCallback(Handler.java:739)  
     at android.os.Handler.dispatchMessage(Handler.java:95)  
     at android.os.Looper.loop(Looper.java:148)  
     at android.app.ActivityThread.main(ActivityThread.java:5417)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
+0

ich glaube, der Schlüssel takeout Ihrer Textausgabe 'Öffnung Anbieter com.android.providers.contacts.ContactsProvider2 von ProcessRecord würde {b0dfc36 5019: com.example.hp250.provider/u0a75} (pid = 5019, uid = 10075) erfordert android.permission.READ_CONTACTS oder android.permission.WRITE_CONTACTS'. Sie scheinen diese Erlaubnis nicht erklärt zu haben. –

Antwort

0

posten Sie Ihre Erlaubnis zu setzen aus der Manifestdatei - es sieht so aus, als hätten Sie keine Berechtigung hinzugefügt in Ausnahme erwähnt:

requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTSn 

, wenn Sie es haben versuchen Sie Ihr Projekt zu reinigen und bauen wieder

+0

Ja, ich habe diese Berechtigungen hinzugefügt

0

ich denke, Sie sind Targeting-SDK 23, müssen Sie einen Requesting Permissions at Run Time

zum Beispiel hinzufügen:

// 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 expanation 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. 
} 
} 
+0

das sollte in onCreate sein? @Mounir Elfassi –

+0

ich denke ja, es hängt von der Struktur Ihres Codes ab –

Verwandte Themen