0

次のコードを使用して、アプリ用のカスタム アカウントを作成しました。

    Account account = new Account(username, accountType);
    ContentResolver.setIsSyncable(account, context.getString(R.string.CONTACT_AUTHORITY), 1);
    ContentResolver.setSyncAutomatically(account, context.getString(R.string.CONTACT_AUTHORITY), true);
    if(accManager.addAccountExplicitly(account, password, userData)) {
        Intent intent = new Intent();
        intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, account.name);
        intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, account.type);
        intent.putExtra(AccountManager.KEY_AUTHTOKEN, account.type);
        context.setAccountAuthenticatorResult(intent.getExtras());
        context.setResult(Activity.RESULT_OK);
        return account;
    } else {
        // display error
    }

そして、次を使用して新しい連絡先を挿入しようとしました:

// insert new contact
ContentValues values = new ContentValues();
values.put(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType);
values.put(ContactsContract.RawContacts.ACCOUNT_NAME, accountName);
Uri rawContactUri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
Log.d("ABC", "New raw contact id = " + rawContactId);

// insert new rawContact id
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "zzzzzawesome");
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);

新しい連絡先を挿入できましたが、問題は連絡先リストでその連絡先を見ると、[接続済み経由] セクションにアプリのアイコンが表示されず、代わりに電話のアイコンが表示されることです。 ?

ところで、テストにサムスンS5を使用しています。

ここに画像の説明を入力

4

1 に答える 1

1

私はついにそれを解決しました。問題は SyncAdapter サービスの実装がないことにあります。AndroidManifest.xml に以下を追加すると、問題は解決しました。

    <service
        android:name=".authenticator.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" />
    </service>
于 2015-04-22T06:04:36.513 に答える