Zeigen Sie das App-Symbol an, wenn der Kontakt mit der Anwendung im Telefonbuch verbunden ist

Ich versuche, das Anwendungssymbol für die Telefonnummer anzuzeigen, die mit der Anwendung verknüpft ist.

Ich habe versucht, diesem Link zu folgen, aber es ist zu schwierig.
Gibt es eine Bibliothek für diese oder eine einfache Möglichkeit, dieses Problem zu lösen?

  • Android SDK Windows konnte Android.bat nicht ausführen
  • Robolectric sagt "AndroidManifest.xml nicht gefunden"
  • Übertragen von Daten über Audio-Buchse über zwei Android-Geräte
  • Items in listView haben weißen Text bei der Verwendung von setAdapter im UI-Thread
  • Was ist die Bedeutung von xmlns: Tools im Android XML Layout?
  • Wie kann ich eine bestimmte Aktivität in Android Studio ausführen?
  • Zum Beispiel können wir sagen, der Kontakt ist in whatsapp, facebook, google, … im Telefon Adressbuch vorhanden.
    Ähnlich möchte ich mein Anwendungssymbol neben diesen Messenger-Anwendungen anzeigen.

    Wie nachfolgend dargestellt

  • Wie man ein EditText wählbar aber nicht bearbeitbar auf Android Ice Cream Sandwich?
  • Android Gradle Manifest Merger: Überschreiben Sie 'use-permission' Attribut aus einer Bibliothek
  • Android ActionBar setCheckable () funktioniert nicht
  • Wie man google-play-services.jar Projektabhängigkeit hinzufügt, so dass mein Projekt läuft und präsentiert Karte
  • Holen Sie sich ein Bild von Android's integrierte Galerie-App programmgesteuert
  • Wie man Facebook Share-Button in Android-Anwendung hinzufügen
  • One Solution collect form web for “Zeigen Sie das App-Symbol an, wenn der Kontakt mit der Anwendung im Telefonbuch verbunden ist”

    Der folgende Code zeigt eine mögliche Lösung. Das Aufrufen der SynchronisierungsKontakt-Methode führt dazu, dass der Link in der Kontakt-App hinzugefügt wird. Beachten Sie, es ist noch nicht robust Code, aber es zeigt die Idee und funktioniert. Beachten Sie auch die folgenden zwei POJO-Klassen sind spezifisch für meine Implementierung und nicht wesentlich für die Arbeit der Kontaktverknüpfung: PhoneNumber, ContactInfo.

    MainActivity.java:

    private void synchronizeContact(ContactInfo contactInfo) { ContactsSyncAdapterService syncAdapter = new ContactsSyncAdapterService(); Account account = new Account(contactInfo.getDisplayName(), getString(R.string.account_type)); //account_type = <yourpackage>.account PhoneNumber phoneNumber = contactInfo.getPhoneNumbers().get(0); syncAdapter.performSync(MainActivity.this, account, phoneNumber); } 

    KontakteSyncAdapterService:

     private static ContentResolver itsContentResolver = null; public void performSync(Context context, Account account, PhoneNumber number) { itsContentResolver = context.getContentResolver(); addContact(account, account.name, account.name, number.getNumber()); } private void addContact(Account account, String name, String username, String number) { ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>(); ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(RawContacts.CONTENT_URI); builder.withValue(RawContacts.ACCOUNT_NAME, account.name); builder.withValue(RawContacts.ACCOUNT_TYPE, account.type); builder.withValue(RawContacts.SYNC1, username); operationList.add(builder.build()); builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); builder.withValueBackReference(ContactsContract.CommonDataKinds.StructuredName.RAW_CONTACT_ID, 0); builder.withValue(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE); builder.withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, name); operationList.add(builder.build()); builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0); builder.withValue(ContactsContract.Data.MIMETYPE, "vnd.android.cursor.item/vnd.<yourpackage>.profile"); builder.withValue(ContactsContract.Data.DATA1, username); builder.withValue(ContactsContract.Data.DATA2, number); operationList.add(builder.build()); try { itsContentResolver.applyBatch(ContactsContract.AUTHORITY, operationList); } catch (OperationApplicationException e) { e.printStackTrace(); } catch (RemoteException e) { e.printStackTrace(); } } 

    ProfileActivity (Klasse für die Absicht beim Tippen auf den Kontakt-App-Link):

     @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.profile); Uri intentData = getIntent().getData(); if (isNotEmpty(intentData)) { Cursor cursor = managedQuery(intentData, null, null, null, null); if (cursor.moveToNext()) { String username = cursor.getString(cursor.getColumnIndex("DATA1")); String number = cursor.getString(cursor.getColumnIndex("DATA2")); TextView view = (TextView) findViewById(R.id.profiletext); view.setText("<yourtext>"); doSomething(getPhoneNumber(number)); } } else { handleIntentWithoutData(); } } private void doSomething(PhoneNumber phoneNumber) { Uri uri = Uri.parse("tel:" + phoneNumber.getNumber()); Intent intent = new Intent(Intent.ACTION_CALL, uri); startActivity(intent); } 

    Contacts.xml:

     <?xml version="1.0" encoding="utf-8"?> <ContactsSource xmlns:android="http://schemas.android.com/apk/res/android"> <ContactsDataKind android:icon="@drawable/ic_launcher" android:mimeType="vnd.android.cursor.item/vnd.<yourpackage>.profile" android:summaryColumn="data2" android:detailColumn="data3" android:detailSocialSummary="true" /> 

    Authenticator.xml:

     <?xml version="1.0" encoding="utf-8"?> <account-authenticator xmlns:android="http://schemas.android.com/apk/res/android" android:accountType="<yourpackage>.account" android:icon="@drawable/ic_launcher" android:smallIcon="@drawable/ic_launcher" android:label="@string/app_name" android:accountPreferences="@xml/account_preferences" /> 

    Account_preferences.xml:

     <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> </PreferenceScreen> 

    Sync_contacts.xml:

     <?xml version="1.0" encoding="utf-8"?> <sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" android:contentAuthority="com.android.contacts" android:accountType="<yourpackage>.account" android:supportsUploading="false" /> 

    Telefonnummer:

     private String number; public String getNumber() { return number; } public void setNumber(String number) { this.number = number; } 

    Kontaktinformation:

     private List<PhoneNumber> itsPhoneNumbers = new ArrayList<PhoneNumber>(); public void setDisplayName(String displayName) { this.itsDisplayName = displayName; } public String getDisplayName() { return itsDisplayName; } public void addPhoneNumber(PhoneNumber phoneNumber) { this.itsPhoneNumbers.add(phoneNumber); } public List<PhoneNumber> getPhoneNumbers() { return itsPhoneNumbers; } 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.