1

私はテキストビューを持っています。それをクリックすると、ネイティブの連絡先リストが開きます。ユーザーが連絡先を選択したら、アプリに番号を表示する必要があります。名前は表示できましたが、番号は表示できませんでした。助けてください。

前もって感謝します。

これは私のコードですが、連絡先を選択するとアプリがクラッシュします。「残念ながら 'app_name' が停止しました」

  public void dail(View v) 
   {
     Intent contactPickerIntent = new Intent(Intent.ACTION_PICK,  Contacts.CONTENT_URI);  
     startActivityForResult(contactPickerIntent, CONTACT_PICKER_RESULT); 
   }    


  protected void onActivityResult(int requestCode, int resultCode, Intent data) 
   {  
  if (data != null) {
        Uri uri = data.getData();

        if (uri != null) {
            Cursor c = null;
            try {
                c = getContentResolver().query(uri, new String[]{ 
                            ContactsContract.CommonDataKinds.Phone.NUMBER,  
                            ContactsContract.CommonDataKinds.Phone.TYPE },
                        null, null, null);

                if (c != null && c.moveToFirst()) {
                    String number = c.getString(0);
                    int type = c.getInt(1);
                    showSelectedNumber(type, number);
                }
            } finally {
                if (c != null) {
                    c.close();
                }
            }
        }
    }
 }

 public void showSelectedNumber(int type, String number) {
    Toast.makeText(this, type + ": " + number, Toast.LENGTH_LONG).show();      
 }
}
4

3 に答える 3

0

これを試して

このコードをテキストビューに入れますOnclickListner

Intent intent = new Intent(Intent.ACTION_PICK, People.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))+" : "+c.getInt(c.getColumnIndexOrThrow(People.NUMBER));
                                            //
                                            txtContacts1.setText(name);
                                    }
                            }
                            break;
            }

このコードを入れない日のために

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + c.getInt(c.getColumnIndexOrThrow(People.NUMBER)));
context.startActivity(intent);
于 2013-10-26T12:26:53.853 に答える