2016-09-27 2 views
0

So einfach wie die Frage. Ich würde gerne wissen, ob es eine gemeinsame Absicht gibt, die Kontakte-App anzuzeigen, so dass der Benutzer die Kontaktliste sehen konnte.Gibt es eine Absicht, die Adressbuch-App anzuzeigen?

Ich habe bemerkt, gibt es Absichten für einen Kontakt Kommissionierung, einen Kontakt zeigt, hinzufügen und einen Kontakt bearbeiten, aber alle von ihnen sind für einen einzelnen Kontakt (alle here geschrieben) ...

Ich glaube, ich könnte eine dieser Absichten abfragen, und sehen, welche App es behandelt, und es einfach starten, aber gibt es vielleicht einen besseren Weg?

+0

Hallo, haben einen Blick auf die [link] (https://developer.android.com/ training/contacts-provider/retrieve-names.html) von der Android-Entwicklerseite. Es gibt ein Beispiel zum Herunterladen. – Vall0n

+0

@ Vall0n Nicht relevant. Ich habe nicht nach einer Kontaktliste gefragt. Ich fragte, ob es eine Absicht gibt, zur Adressbuch-App zu gehen. –

+0

Oh, Entschuldigung! Mein Fehler. – Vall0n

Antwort

0

OK verwenden können, fand die Antwort "pskink" Benutzer-Kommentar mit:

startActivity(new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_APP_CONTACTS)); 

Die IDE warnt jedoch, dass API 15 und höher benötigt wird. Ich frage mich, wie es vorher funktioniert hat. Zum Beispiel, wie Launcher ein App-Icon dafür zeigten, wissend, welche App es öffnen würde.


EDIT:

Bei früheren Versionen von Android, können Sie:

startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("content://contacts/people"))) 
+0

siehe' Intent # ACTION_VIEW' docs – pskink

+0

Sie meinen, ich sollte Put eine URI? aber was zu setzen? Using .setData (Uri.fromParts ("tel", "", null))), es öffnet die Telefon-App, nicht die Kontakte App ... –

+0

lesen 'Intent' Dokumente, Sie werden die Antwort finden äh für deine Frage – pskink

0

Sie das folgende Snippet Code

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
startActivityForResult(intent, PICK_CONTACT); 

Fügen Sie diesen Code in Ihre onActivityResult

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
super.onActivityResult(reqCode, resultCode, data); 

switch (reqCode) { 
case (PICK_CONTACT) : 
    if (resultCode == Activity.RESULT_OK) { 
    Uri contactData = data.getData(); 
    Cursor c = managedQuery(contactData, null, null, null, null); 
    if (c.moveToFirst()) { 
     String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     // TODO Fetch other Contact details as you want to use 

    } 
    } 
    break; 
} 
} 
+0

Wie ich geschrieben habe, möchte ich nicht einen bestimmten Kontaktbildschirm öffnen. –

Verwandte Themen