我试试这个:
public class CallMEActivity extends Activity {
private static final String TAG = null;
/** Called when the activity is first created. */
Button btnPress;
EditText txtPhoneNo;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnPress = (Button) findViewById(R.id.btnPress);
txtPhoneNo = (EditText) findViewById(R.id.txtPhone);
btnPress.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent i = new
Intent(android.content.Intent.ACTION_PICK);
i.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
int request_Code = 0;
startActivityForResult(i,request_Code);
}
});
}
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
try {
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor cur = managedQuery(contactData, null, null, null, null);
ContentResolver contect_resolver = getContentResolver();
if (cur.moveToFirst()) {
String id = cur
.getString(cur
.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
Cursor phoneCur = contect_resolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { id }, null);
if (phoneCur.moveToFirst()) {
txtPhoneNo.setText(phoneCur
.getString(phoneCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
id = null;
phoneCur = null;
}
contect_resolver = null;
cur = null;
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
Log.e(TAG, e.toString());
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, e.toString());
}
}
}
我按下按钮,选择一个联系人 - >但文本框仍然是空的
我用debug运行它,我发现cur
为空
如何解决?
答案 0 :(得分:1)
试试这个
Intent i = new
Intent(android.content.Intent.ACTION_PICK);
i.setType(ContactsContract.CommonDataKinds.Phone.C ONTENT_TYPE);
startActivityForResult(i,request_Code);
然后在代码下面创建一个方法粘贴并做相应的操作。
这个想法是你打开了一个ContactActivity来获取信息。所以当你选择一个联系人时,onActivityResult会被自动解雇。所以你必须在那里找到号码并且必须放入文本框
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
super.onActivityResult(reqCode, resultCode, data);
try {
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor cur = managedQuery(contactData, null, null, null, null);
ContentResolver contect_resolver = getContentResolver();
if (cur.moveToFirst()) {
String id = cur
.getString(cur
.getColumnIndexOrThrow(ContactsContract.Contacts._ID));
Cursor phoneCur = contect_resolver.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[] { id }, null);
if (phoneCur.moveToFirst()) {
txtPhoneNo.setText(phoneCur
.getString(phoneCur
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
}
id = null;
phoneCur = null;
}
contect_resolver = null;
cur = null;
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
Log.e(TAG, e.toString());
} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, e.toString());
}
答案 1 :(得分:0)
试试这个。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_PICK_CONTACT && resultCode == RESULT_OK) {
String strName = "";
String strPhone = "";
Uri dataUri = data.getData();
Cursor contacts = managedQuery(dataUri, null, null, null, null);
if (contacts.moveToFirst()) {
String name;
int nameColumn = contacts.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
name = contacts.getString(nameColumn);
Cursor phones = getContentResolver().query(dataUri, null, null, null, null);
if (phones.moveToFirst()) {
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
strName = new String(name);
strPhone = new String(phoneNumber);
}
phones.close();
}
EditText edtName = (EditText) mParentsAddDialog.findViewById(R.id.edt_add_parents_name);
EditText edtPhone = (EditText) mParentsAddDialog.findViewById(R.id.edt_add_parents_phone);
edtName.setText(strName);
edtPhone.setText(strPhone);
}
}