0

「Androidの連絡先リストを開く方法」を示すオンラインの投稿をたくさん見ましたが、それらはすべて時代遅れであり、一部のコードはもう機能しません.

編集:

次のようになりました。

public class MessagePreview extends Activity {
final int PICK_CONTACT = 3;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Button recipientContact = (Button) findViewById(R.id.buttonAddRecipient);

    recipientContact.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent intent = new Intent(Intent.ACTION_PICK,
                    ContactsContract.Contacts.CONTENT_URI);
            startActivityForResult(intent, PICK_CONTACT);
        }
    });

}

@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
    super.onActivityResult(reqCode, resultCode, data);

    switch (reqCode) {
    case (PICK_CONTACT):
        if (resultCode == Activity.RESULT_OK) {
            Uri contactData = data.getData();
            Cursor c = managedQuery(contactData, null, null, null, null);
            if (c.moveToFirst()) {
                String name = c.getString(c
                        .getColumnIndexOrThrow(People.NAME));
                // TODO Whatever you want to do with the selected contact
                // name.
            }
        }
        break;
    }
}
 }

エラーはありませんが、

  • フィールド Contacts.PeopleColumns.NAME は非推奨です
    • タイプ Contacts.People は非推奨です
    • フィールド Contacts.PeopleColumns.NAME は非推奨です
    • タイプ Contacts.People は非推奨です

この行で:

文字列名 = c.getString(c.getColumnIndexOrThrow(People.NAME));

その行の後にさらにコードを追加する必要がありますが、何を追加すればよいかわかりません。

4

2 に答える 2

0
String[] projection    = new String[] {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                    ContactsContract.CommonDataKinds.Phone.NUMBER };
Cursor names = getContentResolver().query(contactData , projection, null, null, null);
int indexName = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
int indexNumber = names.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
names.moveToFirst();
do {
  String name   = names.getString(indexName);
  String number = names.getString(indexNumber);
} while (names.moveToNext());

onactivityforresultsでこのコードを試してください

于 2012-04-29T02:30:58.220 に答える
0

別のメソッド内でメソッドを定義しようとしています。それはうまくいきません。の定義をonActivityResult()のメソッドに移動してくださいActivity

FWIW、これはAndroid 1.5-4.0.3 で動作する連絡先を選択するサンプル アプリケーションです。

于 2012-04-28T20:27:33.100 に答える