gpt4 book ai didi

android - 在 Android 设备中使用 ACTION_PICK Intent 仅显示带有电话号码的联系人

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

我的目标是只向用户显示带有电话号码的联系人,并让用户选择我想存储在本地的几个联系人。

我在下面的方法中使用了各种选项来代替 ContactsContract.Contacts.CONTENT_URI。但是我收到了很多联系人(很多都是只有电子邮件 ID 的垃圾邮件)。

    public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.contact_selector);

((Button)findViewById(R.id.btnphonecontactlist)).setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent contactIntent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(contactIntent, 1);
}
});
}

如果我将 ContactsContract.Contacts.CONTENT_URI 作为上述方法的参数传递,并且在下面的处理程序方法的情况下,查询方法的 String[] 作为投影参数(显示为注释),该方法将失败并返回 java.lang。非法参数异常。如果我在下面的方法中传递 null,那么无论我选择什么联系人,我都找不到任何与电话号码或电子邮件相关的列。

    @Override
public 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, null
// new String[] {
//ContactsContract.CommonDataKinds.Phone.NUMBER,
//ContactsContract.CommonDataKinds.Phone.TYPE},
, null, null, null);

if(c != null && c.moveToFirst())
{
String number = c.getString(0);
String type = c.getString(1);
}
}
finally
{
if(c != null && !c.isClosed())
c.close();
}
}
}
}

有什么方法可以在用户转到电话簿并且有可用电话号码时仅显示用户通常可见的联系人?

我尝试遍历 stackoverflow 和其他站点中的所有线程,但找不到解决此问题的任何解决方案,尽管许多人已经发布了该问题。我在 Android 平台上的工作不多,我可能遗漏了某些小细节,我相信一定有一种简单的方法可以实现这一点。

请建议。感谢您的帮助。

谢谢。

最佳答案

请使用下面的代码

Intent intent = new Intent(Intent.ACTION_PICK,  ContactsContract.Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, 1);

关于android - 在 Android 设备中使用 ACTION_PICK Intent 仅显示带有电话号码的联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15153943/

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