gpt4 book ai didi

android - 如何调用 Android 联系人列表并从其详细信息屏幕中选择一个电话号码?

转载 作者:IT老高 更新时间:2023-10-28 22:01:16 26 4
gpt4 key购买 nike

我已经阅读了已经发布的解决方案,但他们没有告诉我如何使用系统的联系方式屏幕来选择要使用的任何一个号码?我正在开发一个短信发送安卓应用程序,它可以选择手机的联系人和用户想要发送到的号码......

到目前为止,我还没有找到任何关于选择任何一个数字的信息。它只需要以编程方式完成吗?从数据库中检索所有号码并向其发送短信?

问候

雪利酒

最佳答案

呼,我花了一些时间,但我想我有你需要的答案(即使已经为时已晚,但我仍会将其发布为其他人的引用)。

在我目前正在开发的应用程序中,用户可以在其中输入电话号码EditText 或单击按钮并从电话通讯录中选择一个人。如果此人有多个电话号码,则有一个下拉列表,他可以从中准确选择一个。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contact_picker);

// this opens the activity. note the Intent.ACTION_GET_CONTENT
// and the intent.setType
((Button)findViewById(R.id.pick_person)).setOnClickListener( new OnClickListener() {
@Override
public void onClick(View v) {
// user BoD suggests using Intent.ACTION_PICK instead of .ACTION_GET_CONTENT to avoid the chooser
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
// BoD con't: CONTENT_TYPE instead of CONTENT_ITEM_TYPE
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
startActivityForResult(intent, 1);
}
});
}

现在,一旦用户选择了一个联系人(并且可能选择了几个电话号码之一),您就可以按正常方式检索数据:

@Override
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();
}

这里是 documentation for CommonDataKinds.Phone for on dev.android .

int "type"告诉您号码的类型:mobile (2)、home (1)、work (3) 等等。

注意:在用户选择联系人后,他会得到一个数字微调器,但没有指明数字类型。这对用户来说并不友好:如果一个联系人有 5 个分配的号码……呃,其中哪一个又是传真号码?

另一个注意事项:上面的例子需要 sdk > 5 (Android 2.0+),所以没有 1.6 (=sdk 4)。 1.6 有不同的 api,如果你想同时支持这两个版本,请阅读 article about the contacts API on dev.android .

祝你好运。

免责声明:我从 PickContact.java example 中复制了大部分代码

关于android - 如何调用 Android 联系人列表并从其详细信息屏幕中选择一个电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4993063/

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