需要在 Android 默认联系人应用程序(如 Whatsapp、Truecaller 和 Telegram 等)的“已连接应用程序”列表中显示我们的应用程序选项。如图所示。尝试使用 ContentProvider 和 SyncAdapter。但无法实现。如果您对此有任何想法,请帮助我。先谢谢你了
查看 GitHub 上的 Telegram Android 代码,我收集了以下代码,它们将帮助您实现您想要的目标:
<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 中添加这两个服务
<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"/>
根据您的应用程序需要更改参数,例如图标等。
<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>
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="com.android.contacts"
android:accountType="org.telegram.messenger"/>
根据您的应用程序需求修改此设置。
<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>
这些是您的应用程序名称下显示的快捷方式,例如
AuthenticatorService
和 ContactsSyncAdapterService 的代码。为此,请参考我在开始时提到的源代码。