gpt4 book ai didi

android - 如何通过 Intent 添加名字和姓氏的联系人

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

我正在尝试使用表单中已有的一些数据来启动 android native “添加或编辑联系人” Activity 。这是我目前使用的代码:

Intent intent = new Intent(Intent.ACTION_INSERT_OR_EDIT);
intent.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE);

intent.putExtra(Insert.NAME, "A name");
intent.putExtra(Insert.PHONE, "123456789");
startActivity(intent);

我的问题是我想指定名字和姓氏。我还注意到有一个 StructuredName 类,其中包含我需要的所有字段的常量标识符。不幸的是,我无法将 StructuredName 字段添加到 Intent 中......

有人知道这是如何正确完成的吗?

注意:我不是想直接添加联系人,而是想打开一个填充的“添加联系人”对话框!

谢谢呸

最佳答案

ContactsContract.Intents.Insert 中的大部分/所有值都在默认联系人应用程序的 model/EntityModifier.java 类中处理 - 并且只是填充来自Insert.NAMEStructuredName.GIVEN_NAME

您可以尝试将其作为 vCard 2.1 (text/x-vcard) 导入,它支持所有名称组件,但要求您将 vCard 文件转储到 sdcard 上或提供 ContentResolver#openInputStream(Uri ) 可以读取(通常是 sdcard 上的文件或指向您自己的 ContentProvider 的 URI)。

一个使用 ContentProvider 动态创建 vCards 的简单示例:

在您的 Activity 中:

Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("content://some.authority/N:Jones;Bob\nTEL:123456790\n"), "text/x-vcard");
startActivity(i);

在你的ContentProvider中(注册ACTION_VIEW Intent中使用的权限):

public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
try {
FileOutputStream fos = getContext().openFileOutput("filename.txt", Context.MODE_PRIVATE);
String vcard = "BEGIN:VCARD\nVERSION:2.1\n" +
uri.getPath().substring(1) +
"END:VCARD\n";
fos.write(vcard.getBytes("UTF-8"));
fos.close();
return ParcelFileDescriptor.open(new File(getContext().getFilesDir(), "filename.txt"), ParcelFileDescriptor.MODE_READ_ONLY);
} catch (IOException e) {
throw new FileNotFoundException();
}
}

这应该在触发时将联系人命名为您在 Uri 路径中输入的任何内容到电话簿中。如果用户有多个联系人帐户,他/她将被要求选择一个。

注意: vCard 的正确编码当然会被完全忽略。我认为大多数版本的联系人应用程序应该也支持 vCard 3.0,它没有像 vCard 2.1 那样脑残的编码。

从好的方面来说,此方法还允许您添加工作/手机和其他号码(以及更多)。

关于android - 如何通过 Intent 添加名字和姓氏的联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545609/

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