将我们的呼叫或短信应用程序放入“连接的应用程序”列表联系人应用程序中

问题描述 投票:0回答:1

我需要我们的应用程序在 Android 默认联系人应用程序的“连接的应用程序”列表中显示为一个选项,就像 WhatsApp、Truecaller 和 Telegram 等一样 - 如下图所示。

我尝试过

ContentProvider
SyncAdapter
但没有运气。

enter image description here

android kotlin android-contentprovider android-contacts android-contentresolver
1个回答
0
投票

查看 GitHub 上的 Telegram Android 代码,我收集了以下代码,它们将帮助您实现您想要的目标:

  1. AndroidManifest.xml
<service android:name=".AuthenticatorService" android:exported="true">
  <intent-filter>
    <action android:name="android.accounts.AccountAuthenticator"/>
  </intent-filter>
  <meta-data android:name="android.accounts.AccountAuthenticator"
    android:resource="@xml/auth"/>
</service>
<service android:name=".ContactsSyncAdapterService" android:exported="true">
  <intent-filter>
    <action android:name="android.content.SyncAdapter" />
  </intent-filter>
  <meta-data android:name="android.content.SyncAdapter"
    android:resource="@xml/sync_contacts" />
  <meta-data android:name="android.provider.CONTACTS_STRUCTURE"
    android:resource="@xml/contacts" />
</service>

您需要在 AndroidManifest.xml 中添加这两个服务

  1. auth.xml
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="org.telegram.messenger"
    android:icon="@drawable/ic_launcher_dr"
    android:smallIcon="@drawable/ic_launcher_dr"
    android:label="@string/AppName"
    android:accountPreferences="@xml/auth_menu"/>

根据您的应用程序需要更改参数,例如图标等。

  1. auth_menu.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <PreferenceCategory android:title="@string/Settings"/>
    <PreferenceScreen android:key="account_settings"
        android:title="@string/AccountSettings"
        android:summary="">
        <intent android:action="org.telegram.messenger.OPEN_ACCOUNT"
            android:targetPackage="org.telegram.messenger"
            android:targetClass="org.telegram.ui.LaunchActivity"/>
    </PreferenceScreen>
</PreferenceScreen>

这将在帐户下的手机设置中可见,例如this

  1. sync_contacts.xml
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
    android:contentAuthority="com.android.contacts"
    android:accountType="org.telegram.messenger"/>

根据您的应用程序需求修改此设置。

  1. 联系人.xml
<ContactsAccountType xmlns:android="http://schemas.android.com/apk/res/android">
    <ContactsDataKind android:icon="@drawable/ic_launcher_dr"
        android:mimeType="vnd.android.cursor.item/vnd.org.telegram.messenger.android.profile"
        android:summaryColumn="data2"
        android:detailColumn="data3"
        android:detailSocialSummary="true"/>
    <ContactsDataKind android:icon="@drawable/ic_launcher_dr"
        android:mimeType="vnd.android.cursor.item/vnd.org.telegram.messenger.android.call"
        android:summaryColumn="data2"
        android:detailColumn="data3"
        android:detailSocialSummary="true"/>
    <ContactsDataKind android:icon="@drawable/ic_launcher_dr"
        android:mimeType="vnd.android.cursor.item/vnd.org.telegram.messenger.android.call.video"
        android:summaryColumn="data2"
        android:detailColumn="data3"
        android:detailSocialSummary="true"/>
</ContactsAccountType>

这些是您的应用程序名称下显示的快捷方式,例如

this

  1. 最后但并非最不重要的一点是,您需要添加
    AuthenticatorService
    和 ContactsSyncAdapterService 的代码。为此,请参考我在开始时提到的源代码。
© www.soinside.com 2019 - 2024. All rights reserved.