0

現在、すべての連絡先を照会してデータベースに保存しようとしています。ただし、この問題を認識しています。連絡先に複数の番号がある場合、同じ連絡先名と他の複数の番号が返されます。しかし、私の連絡先に電子メールがある場合、クエリは同じ名前と同じ番号を複製します。これを解決するにはどうすればよいですか?名前と番号を一度だけ保存したいと思います。そして、私は電子メールとは何の関係も望んでいません。

TYPE_MOBILEだけが欲しいと定義することで、なんとか携帯電話番号だけを取得できました。ただし、連絡先にGoogle +がある場合、クエリで同じ名前と同じ番号が重複していることに気付きました。誰かがこの線に沿って私を導くことができますか?ありがとう!

これが私が使用しているコードです:

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext()) {
    int phoneType = phones.getInt(phones.getColumnIndex(Phone.TYPE));
    if (phoneType == Phone.TYPE_MOBILE)
    {
          mobile = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DATA));
          mobile = mobile.replaceAll("\\s", "");
          id = phones.getString(phones.getColumnIndex(ContactsContract.Contacts._ID));
          name=phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
          long idL = DbHelper.createContact(name, "", mobile, "", id);
          if (idL > 0) {
                mRowId = idL;
          }
    }   
    phones.close();
}
4

2 に答える 2

0

データベースに番号を保存しないでください。Androidでこれを行う正しい方法ではありません。番号の名前を検索する必要がある場合は、連絡先を照会して検索します。ユーザーは連絡先に関するsthを変更できるため、データベースに古いデータが保存されます。

于 2012-07-05T09:09:15.877 に答える
0
ArrayList<String> list =new ArrayList<String>();

あなたのwhileループで

if(!list.contains(mobile)){
    list.add(mobile);
}

リストに入力したら、それらを保存できます。

しかし、あなたのデータベースへの保存数については同じだと思います。それらを保存する代わりに、ID を保存します。

于 2012-07-13T05:10:22.133 に答える