使用蓝牙阅读联系人

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用蓝牙阅读联系人相关的知识,希望对你有一定的参考价值。

我正在尝试使用32feet库从我的移动设备上读取联系人,当我尝试时,我遇到了错误的请求错误。该设备与我的应用程序配对。这是我的代码:

var item = (BluetoothDeviceInfo)listBox.SelectedItem;
Task.Run(() =>
{
    item.Update();
    item.Refresh();

    item.SetServiceState(BluetoothService.PhonebookAccess, true);

    if (OBEXOpenStream(item.DeviceAddress.ToString()))
    {
        if (OBEXConnect())
        {
            string tName = "";
            string tType = "text/x-vCard";
            string tFileContent = "";
            int result = OBEXRequest("GET", tName, tType, tFileContent);

            item.ShowDialog();
        }
    }
    OBEXCloseStream();

});

我不知道是否有其他方法可以使用OBEX获取联系人。

答案

当你必须为请求发送一个空名称标题时,你可能犯了一个错误。变量tName应该是null而不是"",因为""是以字节为单位的0x00,而不是空名称标题。库将发送名称标题as0x0004的大小,而不是0x0003,这是您的vCard请求所必需的。这是一个常见的错误,我也提交了:)

或者你为什么给tFileContents参数?据我所知,没有必要。您可能必须删除该参数。根据IRDA规范,不需要它。

对不起英语不好,我希望这个答案有很多帮助。

以上是关于使用蓝牙阅读联系人的主要内容,如果未能解决你的问题,请参考以下文章

如何使用片段将联系人选择到edittext

Android - 片段中的联系人选择器

蓝牙pbap协议源码解析

蓝牙传通讯录怎么操作

检索数据未出现在 ListView 的片段中

我可以在 android studio 的片段上使用 Firebase 吗?