2

アンドロイドの電話帳から連絡先を選びたいです。ボタンを押すと、連絡先リストが表示されます。クリックすると、アクティビティに表示されているクリックした連絡先の番号を選択したいのですが、私の場合はnullが返されました。これが私のコードです:

    import android.app.Activity;
    import android.content.Intent;
    import android.database.Cursor;
    import android.net.Uri;
    import android.os.Bundle;
    import android.provider.Contacts.People;
    import android.provider.ContactsContract.Contacts;
    import android.provider.ContactsContract.PhoneLookup;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;

    public class Main extends Activity {
    Button b;
    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.textView1);
        b = (Button) findViewById(R.id.button1);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(Intent.ACTION_PICK,People.CONTENT_URI);
                startActivityForResult(intent, 100);
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Uri contact = data.getData();
        Cursor c = managedQuery(contact, null, null, null, null);
        c.moveToFirst();
        tv.setText(c.getString(c.getColumnIndex(People.NUMBER))+" Added");
    }

}

なぜこれが起こっているのですか?前もって感謝します。

4

2 に答える 2

6

People.CONTENT_URIを使用する代わりに、
代わりにContactsContract.Contacts.CONTENT_URIを使用します。

 Intent intent = new Intent(Intent.ACTION_PICK,People.CONTENT_URI);

使用する

 Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);

例:連絡先の電話番号を取得する

あなたのonacitivityResult:

  Uri contact = data.getData();
      ContentResolver cr = getContentResolver();

    Cursor c = managedQuery(contact, null, null, null, null);
    //      c.moveToFirst();


    while(c.moveToNext()){
        String id = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));

        String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
        if (Integer.parseInt(c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
            Cursor pCur = cr.query(Phone.CONTENT_URI,null,Phone.CONTACT_ID +" = ?", new String[]{id}, null);

            while(pCur.moveToNext()){
                String phone = pCur.getString(pCur.getColumnIndex(Phone.NUMBER));
                tv.setText(name+" Added " + phone);
            }
        }

    }
于 2013-02-04T11:08:53.997 に答える
0

別の連絡先を選択しようとしましたか?これはばかげているかもしれませんが、おそらくその連絡先には番号がありませんか?

于 2013-02-04T11:10:22.107 に答える