2016-09-28 69 views
0

我想從我的電話簿中獲取聯繫人並保存聯繫人的姓名和號碼。我想保存3個聯繫人。爲此,3 EditTexts和各自的按鈕在那裏。點擊按鈕時,用戶被定向到聯繫人,用戶可以選擇所需的聯繫人。但是,我無法實現所有3個編輯文本的聯繫人獲取功能。 當我只用一個聯繫人實現這一點,代碼工作正常。但是,如何在多個聯繫人的情況下實現這一點。 Contact.java無法通過不同按鈕保存多個聯繫人

package com.kamal.sos10; 

import android.content.ContentResolver; 
import android.database.Cursor; 
import android.net.Uri; 
import android.provider.ContactsContract; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.content.Intent; 
import android.widget.Toast; 
public class Contact extends AppCompatActivity { 

EditText msg,editText2,editText3,editText4; 
Button con1,con2,con3; 
static final int PICK_CONTACT = 1; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_contact); 

    msg=(EditText)findViewById(R.id.msg); 
    editText2=(EditText)findViewById(R.id.editText2); 
    editText3=(EditText)findViewById(R.id.editText3); 
    editText4=(EditText)findViewById(R.id.editText4); 

    con1=(Button)findViewById(R.id.con1); 
    con2=(Button)findViewById(R.id.con2); 
    con3=(Button)findViewById(R.id.con3); 

    con1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(Intent.ACTION_PICK); 
      intent.putExtra("extra_text1", "1"); 
      intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
      if (intent.resolveActivity(Contact.this.getPackageManager()) != null) { 
       startActivityForResult(intent, PICK_CONTACT); 
      } 
     } 
    }); 

    con2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(Intent.ACTION_PICK); 
      intent.putExtra("extra_text2", "2"); 
      intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
      if (intent.resolveActivity(Contact.this.getPackageManager()) != null) { 
       startActivityForResult(intent, PICK_CONTACT); 
      } 
     } 
    }); 

    con3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(Intent.ACTION_PICK); 
      intent.putExtra("extra_text3", "3"); 
      intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
      if (intent.resolveActivity(Contact.this.getPackageManager()) != null) { 
       startActivityForResult(intent, PICK_CONTACT); 
      } 
     } 
    }); 


} 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    String text1 = getIntent().getStringExtra("extra_text1"); 
    Toast.makeText(Contact.this,text1,Toast.LENGTH_SHORT).show(); 
    if (requestCode == PICK_CONTACT) { 
     if (resultCode == this.RESULT_OK) { 
      contactPicked(data); 
     } 
    } 
} 

private void contactPicked(Intent data) { 
    ContentResolver cr = this.getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
    cur.moveToFirst(); 
    try { 
     // getData() method will have the Content Uri of the selected contact 
     Uri uri = data.getData(); 
     //Query the content uri 
     cur = this.getContentResolver().query(uri, null, null, null, null); 
     cur.moveToFirst(); 
     // column index of the contact ID 
     String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
     // column index of the contact name 
     String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
     // column index of the phone number 
     Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
       ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
       new String[]{id}, null); 
     while (pCur.moveToNext()) { 
      String phone = pCur.getString(
        pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)).replaceAll(" ", ""); 
      /*String text1 = getIntent().getStringExtra("extra_text1"); 
      Toast.makeText(Contact.this,text1,Toast.LENGTH_SHORT).show(); 
      if (text1.equals("1")) { 
       editText2.setText(phone); 
      } 
      String text2 = getIntent().getStringExtra("extra_text2"); 
      if (text2 == "2") { 
       editText3.setText(phone); 
      } 
      String text3 = getIntent().getStringExtra("extra_text3"); 
      if (text3 == "3") { 
      editText4.setText(phone); 
     */} 


      pCur.close(); 
     } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 

回答

0

您已經使用PICK_CONTACT = 1爲所有三個事件startActivityForResult

startActivityForResult(intent, PICK_CONTACT); 

給不同的值startActivityForResult每次出現如下圖所示:

con1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Intent intent = new Intent(Intent.ACTION_PICK); 
     intent.putExtra("extra_text", "1"); 
     intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
     if (intent.resolveActivity(Contact.this.getPackageManager()) != null) { 
      startActivityForResult(intent, 1); 
     } 
    } 
}); 

con2.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Intent intent = new Intent(Intent.ACTION_PICK); 
     intent.putExtra("extra_text", "2"); 
     intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
     if (intent.resolveActivity(Contact.this.getPackageManager()) != null) { 
      startActivityForResult(intent, 2); 
     } 
    } 
}); 

con3.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     Intent intent = new Intent(Intent.ACTION_PICK); 
     intent.putExtra("extra_text", "3"); 
     intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
     if (intent.resolveActivity(Contact.this.getPackageManager()) != null) { 
      startActivityForResult(intent, 3); 
     } 
    } 
}); 

現在您的onActivityResult更改以下代碼:

if (requestCode == PICK_CONTACT) { 
    if (resultCode == this.RESULT_OK) { 
     contactPicked(data); 
    } 
} 

這件事:EditText上盒

if (requestCode == 1 || requestCode == 2 || requestCode == 3) { 
    if (resultCode == this.RESULT_OK) { 
     contactPicked(data); 
    } 
} 

我們印刷的電話號碼下面的代碼添加到contactPicked(Intent數據傳輸):

String text = data.getStringExtra("extra_text").toString(); 
if (text.equals("1")) { 
      editText2.setText(phone); 
}   
else if (text == "2") { 
      editText3.setText(phone); 
}    
else (text == "3") { 
     editText4.setText(phone); 
} 
+0

如何在各自的設定手機沒有獲取從電話簿edittext?就像我想設置edittext2通過使用con1等獲取的聯繫人 –

+0

@KamalKumar檢查最新的編輯,如果這解決了您的問題,請接受答案:) – Jaydroid

+0

謝謝。現在它工作正常。 –

相關問題