-2

アンドロイドで電話番号を文字列として取得しようとしていますが、連絡先を取得して電話番号を取得することに成功しましたが、ログの結果はdata1で、番号は32821私は自分の問題を起こさない。ここでアンドロイドの連絡先から電話番号を取得する方法

は私のコードです:

public void getContact(View view){ 
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) { 
     // TODO: Consider calling 
     // ActivityCompat#requestPermissions 
     // here to request the missing permissions, and then overriding 
     // for ActivityCompat#requestPermissions for more details. 

     ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, 10); 
//   return; 
    } 

    Intent contactsIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
    this.pickContact = 1; 
    startActivityForResult(contactsIntent, this.pickContact); 
} 

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

    if(reqCode == this.pickContact){ 
     if (resultCode == Activity.RESULT_OK) { 
      Log.d("ContactsH", "ResOK"); 
      Uri contactData = data.getData(); 
      Cursor contact = getContentResolver().query(contactData, null, null, null, null); 

      if (contact.moveToFirst()) { 
//     String name = contact.getString(contact.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       String phoneNumber = ContactsContract.CommonDataKinds.Phone.NUMBER; 
       // TODO Whatever you want to do with the selected contact name and phone number. 

       Log.d("ContactsH", "Calling to:"+phoneNumber); 
       contact.close(); 
       this.callByNumber(phoneNumber); 
      } 
     } 
    }else{ 
     Log.d("ContactsH", "Canceled"); 
    } 
} 

あなたは私ください助けることができますか?

+4

の可能性のある重複[アンドロイドで連絡先の電話番号を取得する方法](https://stackoverflow.com/questions/11218845/how-to-get-contacts -phone-number-in-android) –

+0

'String name = contact.getString(contact.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));'あなたに名前を教えてくれませんか?同じ番号を試してみませんか? –

+0

申し訳ありませんが、私が選んだ人と同じ番号を表示しているため、これは私のためには機能しません。 –

答えて

1

@Levon Petrosyanの

してくれてありがとうしかし、私はちょうど彼のlinkからパーツを追加する必要があり、私の機能にコピーします。

これは、作業コードです:

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

    if(reqCode == this.pickContact){ 
     if (resultCode == Activity.RESULT_OK) { 
      Log.d("ContactsH", "ResOK"); 
      Uri contactData = data.getData(); 
      Cursor contact = getContentResolver().query(contactData, null, null, null, null); 

      if (contact.moveToFirst()) { 
       String name = contact.getString(contact.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
       // TODO Whatever you want to do with the selected contact's name. 

       ContentResolver cr = getContentResolver(); 
       Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, 
         "DISPLAY_NAME = '" + name + "'", null, null); 
       if (cursor.moveToFirst()) { 
        String contactId = 
          cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
        // 
        // Get all phone numbers. 
        // 
        Cursor phones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
          ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null); 
        while (phones.moveToNext()) { 
         String number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         int type = phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE)); 
         switch (type) { 
          case ContactsContract.CommonDataKinds.Phone.TYPE_HOME: 
           // do something with the Home number here... 
           break; 
          case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE: 
           // do something with the Mobile number here... 
           Log.d("ContactsH", number); 
           this.callByNumber(number); 
           break; 
          case ContactsContract.CommonDataKinds.Phone.TYPE_WORK: 
           // do something with the Work number here... 
           break; 
         } 
        } 
        phones.close(); 
       } 
       cursor.close(); 
      } 
     } 
    }else{ 
     Log.d("ContactsH", "Canceled"); 
    } 
} 
関連する問題