Wie werden Kontaktdetails für Apps angezeigt und behandelt?

Hintergrun

Nicht sicher, wie es heißt, aber wenn Sie den Bildschirm mit den Kontaktdetails der Kontakt-App öffnen, werden dort verschiedene Apps angezeigt, auf die Sie klicken können, um Aktionen auszuführen (z. B. Anrufen und Senden von Nachrichten über Viber und WhatsApp):

Das Proble

Ich weiß nicht, wie diese Aktionen aufgerufen werden, daher kann ich nicht herausfinden, wie ich sie untersuchen soll. Ich habe versucht, nach den einzelnen sozialen Netzwerken zu suchen, wie sie verwendet werden sollen, aber dies scheint eine Menge Aufwand zu bedeuten, der in Zukunft möglicherweise nicht einmal gut funktioniert.

Ich möchte diese Aktionen für alle Apps abfragen, anzeigen und verarbeiten, die in der nativen Kontakt-App angezeigt werden.

Was ich versucht habe

Ich habe versucht, die verwendeten Absichten zu untersuchen, und festgestellt, dass für Viber Folgendes für Nachrichten verwendet werden kann:

    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/"+id));
    intent.setPackage("com.viber.voip");

Ich weiß jedoch nicht, was diese "ID" ist, nur dass sie funktioniert, weil ich sie mit echten Daten getestet habe. Ich habe auch versucht, die gesamte Kontaktdatenbank auszudrucken, um den richtigen Wert (und die Zuordnung) zu finden, aber ich habe ihn nicht gefunden.

Auch kann ich nicht finden, wie diese Informationen gefunden worden sein sollten. Ich vermute, dass es wahrscheinlich eine Abfrage der verfügbaren Mimetypen enthalten sollte, und überprüfen Sie sie auf dem angegebenen Kontakt (wahrscheinlich mit Kontakt-ID).

Die Frag

Wie kann ich einen Kontakt (ID oder Telefonnummer) anzeigen und den Vorgang ausführen, der auf dem Bildschirm mit den Kontaktdetails der Kontakt-App angezeigt wird?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage