1

カスタムの電話帳アプリケーションを構築しています。その一環として、新しい連絡先を追加するか、既存の連絡先の下に追加情報 (電話番号または電子メール) を追加する必要があります。これは単純なテスト ケースでは問題なく動作しますが、特定の状況 (いつになるかは明らかではありません) では、次の 2 つの問題が発生します。

  1. 連絡先の複数のコピーが作成され、多くの場合数百になります。これらはすべて空白で、変更された元の連絡先と同じ表示名を共有するだけです

  2. 連絡先の下に複数の番号 (まったく同じ)。非常に珍しいのは、これらの番号が contactContracts.Data テーブルで同じ _ID を持っているため、同じ一意の ID を持つ複数のインスタンスがどのように存在するかを理解できないことです。表示の問題か確認しましたが、そうではないようです

上記の両方から、情報を正しく挿入しているかどうか疑問に思います。だから私が知りたいのは:

  1. 新しい連絡先を作成するとき、指定する必要があるデフォルトの account_name と account_type はありますか? 現在、両方に null を使用しています

  2. 新しい電話番号を既存の連絡先に追加する場合、contactContracts.Data テーブルにデータを挿入する正しい方法は何ですか? 現在、参照 ID として rawContactID を使用してこの番号を挿入しています。連絡先の contactID を参照として使用して、contactContracts.RawContacts テーブルからこの rawContactID を取得しています。私はしばしば複数の未加工の連絡先を取得するため、最後の連絡先 (任意の選択) を選択して電話番号の挿入を行うことに注意してください。

4

1 に答える 1

2

AccountManagerクラスを使用して、アカウント名とアカウントタイプ情報を取得できます。

    final AccountManager accountTypes = AccountManager.get(getApplicationContext());
    final Account accounts[] = accountTypes.getAccounts();
    for (final Account account: accounts) {
        Log.i(TAG, account.name);
    }
于 2012-11-18T04:20:38.567 に答える