2015-09-10 70 views
1

我已經編寫了一個SyncAdapter來將我的應用程序的聯繫人列表添加到Android聯繫人提供程序。爲了做到這一點,我創建了自己的AccountAuthenticator,一個提供對Authenticator,SyncAdapter和SyncAdapter服務訪問的服務。我可以看到我的帳戶顯示在Android帳戶列表(位於主設置頁面下),我可以看到我的應用程序中的所有聯繫人都顯示在Android的聯繫人(或人)應用程序中。但是當我點擊People應用程序中的「Accounts」按鈕時,我的應用程序的帳戶不會顯示。當我編輯我以前同步到Android聯繫人提供程序的任何個人帳戶時(按照此處的建議),該聯繫人被標記爲「僅限電話,未聯繫的聯繫人」。我知道我一定做錯了什麼,但我至今無法確定我的錯誤是什麼。如何告訴Android聯繫人X屬於帳戶Y?我認爲在創建時向原始聯繫人添加賬戶名稱和賬戶類型就足夠了,但這似乎是不夠的。我錯過了什麼?如何將我的應用程序的帳戶添加到Android通訊錄應用程序的「帳戶」列表中?

Contact doesn't think it's associated with an account

+0

類似的問題在這裏貼出來,與這似乎得到一個答案我更接近:HTTP:/ /stackoverflow.com/questions/21011569/how-do-i-get-my-custom-account-type-to-show-up-in-the-android-contacts-app –

+0

至少部分答案似乎是我使用我自己的ContentProvider的權威(例如com.example.myapp.contentprovider),在我的syncadapter.xml和我的調用ContentResolver添加帳戶,設置它syncable,et c。相反,我應該使用「com.android.contacts」。這讓我可以在聯繫人應用程序中看到我的帳戶,但我的同步聯繫人仍然被標記爲僅限電話的未聯繫人聯繫人,所以很明顯,我還沒有解決所有我的錯誤。 –

回答

1

在花了近一處理這一兩天,我有一個答案:

我假設你有像您的同步服務下的AndroidManifest.xml如下:

<meta-data android:name="android.provider.CONTACTS_STRUCTURE" 
    android:resource="@xml/contacts"/> 

然後在contacts.xml文件中引用在這裏:

<ContactsAccountType 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <EditSchema> 
    </EditSchema> 
</ContactsAccountType> 

如果EditSchema不正確,它將切換到「僅限電話」聯繫人。

對什麼是可以接受的基礎是:

<!-- XML for must-have checks. Base definition, which is valid. --> 
<ContactsAccountType 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <EditSchema> 
     <DataKind kind="name" 
      maxOccurs="1" 
      supportsDisplayName="true" 
      supportsPrefix="true" 
      supportsMiddleName="true" 
      supportsSuffix="true" 
      supportsPhoneticFamilyName="true" 
      supportsPhoneticMiddleName="true" 
      supportsPhoneticGivenName="true" 
      > 
     </DataKind> 
     <DataKind kind="photo" maxOccurs="1" /> 
    </EditSchema> 
</ContactsAccountType> 

我最終發現了很多的例子 - https://android.googlesource.com/platform/packages/apps/Contacts/+/android-sdk-support_r11/tests/res/xml

相關問題