gpt4 book ai didi

android - 如何在 Android 中检索联系人姓名和电话号码

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:01 25 4
gpt4 key购买 nike

我正在尝试检索包含姓名和电话号码的联系人列表。我尝试以下代码:

 // Get a cursor over every contact.
Cursor cursor = getContentResolver().query(People.CONTENT_URI,
null, null, null, null);
// Let the activity manage the cursor lifecycle.
startManagingCursor(cursor);
// Use the convenience properties to get the index of the columns
int nameIdx = cursor.getColumnIndexOrThrow(People.NAME);

int phoneIdx = cursor. getColumnIndexOrThrow(People.NUMBER);
String[] result = new String[cursor.getCount()];
if (cursor.moveToFirst())
do {
// Extract the name.
String name = cursor.getString(nameIdx);
// Extract the phone number.
String phone = cursor.getString(phoneIdx);
result[cursor.getPosition()] = name + "-" +" "+ phone;
} while(cursor.moveToNext());

此代码应返回包含所有联系人姓名及其电话号码的数组,但这仅返回联系人姓名并在电话号码中返回 NULL,

示例输出:

 John - null

最佳答案

在 Android list 中:

    <uses-permission android:name="android.permission.READ_CONTACTS" />

然后在 Activity 中:

editText.setOnFocusChangeListener(new OnFocusChangeListener(){

@Override
public void onFocusChange(View v, boolean hasFocus) {
if(hasFocus){
editText.setText("");
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.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 id = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));

String hasPhone = c.getString(c.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

if (hasPhone.equalsIgnoreCase("1"))
{
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
phones.moveToFirst();
String cNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Toast.makeText(getApplicationContext(), cNumber, Toast.LENGTH_SHORT).show();

String nameContact = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));

editText.setText(nameContact+ " "+ cNumber);
}
}
}
}
}

关于android - 如何在 Android 中检索联系人姓名和电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4613104/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com