3

Android SDK > 5 を使用して、ACTION_INSERT アクティビティを開始して連絡先を作成しています。次のコードを使用して、連絡先に複数の電話番号 (職場、自宅など) を追加したい:

Intent newIntent = new Intent(Intent.ACTION_INSERT, 
          ContactsContract.Contacts.CONTENT_URI); 

for(ContactInfo.Phone p : phones)
      {

       newIntent.putExtra(ContactsContract.Intents.Insert.PHONE, p.number);
       newIntent.putExtra(ContactsContract.Intents.Insert.PHONE_ISPRIMARY, p.isPrimary ? new Integer(1) : null);
       newIntent.putExtra(ContactsContract.Intents.Insert.PHONE_TYPE, unconvertPhoneType(p.type));

      }

(unconvertPhoneType() は型を CommonDataKinds.Phone.TYPE_XXX として取得する関数です)

連絡先に挿入されている例は 1 つだけです。上記の何が問題になっていますか?

さらに、LogCat ログには、次のエラーもあります。

12-14 11:09:03.015: WARN/Bundle(1724): キーの phone_type には文字列が必要でしたが、値は java.lang.Integer でした。デフォルト値が返されました。

PHONE_TYPEから来ているように見えますが、CommonDataKinds.Phone.TYPE_XXXは整数型なのでわかりません...その原因は何ですか?

ありがとう!

4

1 に答える 1

0

logcatは、整数ではなく文字列値を期待していたことを通知しています。それがあなたの問題です。電話番号はString型である必要があります。

この例を公式ドキュメントから抜粋すると、電話番号が「」付きの文字列として表されていることがわかります。

// Add a phone number for Abraham Lincoln.  Begin with the URI for
// the new  record     just returned by insert(); it ends with the _ID
// of the new record, so we don't have to add the ID ourselves.
// Then append the designation for the phone table to this URI,
// and use the resulting URI to insert the phone number.
phoneUri = Uri.withAppendedPath(uri, People.Phones.CONTENT_DIRECTORY);
values.clear(); 
values.put(People.Phones.TYPE, People.Phones.TYPE_MOBILE); 
values.put(People.Phones.NUMBER, "1233214567");
getContentResolver().insert(phoneUri, values);

お役に立てれば。

于 2010-12-15T02:38:05.770 に答える