【问题标题】:Access Android's OBEX server and read data访问Android的OBEX服务器并读取数据
【发布时间】:2012-06-26 03:06:30
【问题描述】:

我想知道是否可以从带有 Bluecove 的 Windows 中从 Android 的 OBEX 服务器读取数据(联系人、未接来电等)。我从 Windows 中尝试了以下代码,但它在连接时返回 OBEX_HTTP_NOT_ACCEPTABLE。 设备地址和通道是正确的,因为在运行此测试时,android 会弹出一个对话框,询问我是否允许其他设备访问它的联系人。 谢谢!

代码:

import java.io.IOException;
import javax.microedition.io.Connector;
import javax.obex.*;

public class PBAPTest1 {

    public static void main(String[] args) {
        String deviceAddress = "001122334455";
        int channel = 19;
        String serverURL = "btgoep://" + deviceAddress + ":" + channel + ";authenticate=false;encrypt=false;master=false";

        System.out.println("Connecting to " + serverURL);

        ClientSession clientSession = null;
        Operation op = null;
        HeaderSet hdr = null;

        try {
            clientSession = (ClientSession) Connector.open(serverURL);
            hdr = clientSession.connect(clientSession.createHeaderSet());
            if (hdr.getResponseCode() != ResponseCodes.OBEX_HTTP_OK) {
                System.out.println("Failed to connect: "
                        + hdr.getResponseCode()); // response: 198 OBEX_HTTP_NOT_ACCEPTABLE
                return;
            }
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        byte[] PBAP_TARGET = new byte[] { 0x79, 0x61, 0x35, (byte) 0xf0,
                (byte) 0xf0, (byte) 0xc5, 0x11, (byte) 0xd8, 0x09, 0x66, 0x08,
                0x00, 0x20, 0x0c, (byte) 0x9a, 0x66 };

        hdr.setHeader(HeaderSet.TARGET, PBAP_TARGET);
        hdr.setHeader(HeaderSet.NAME, "pb.vcf");
        hdr.setHeader(HeaderSet.TYPE, "x-bt/vcard-listing");
        try {
            op = clientSession.get(hdr);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

日志猫:

D/BluetoothEventLoop( 1551): Device property changed: XX:XX:XX:XX:XX:XX property: Connected value: true
D/BluetoothService( 1551): CONNECTION_STATE_CHANGE: XX:XX:XX:XX:XX:XX: 0 -> 2
D/Obex ServerSession( 1948): java.io.IOException: Software caused connection abort
D/BluetoothAdapterStateMachine( 1551): BluetoothOn process message: 52
D/BluetoothService( 1551): CONNECTION_STATE_CHANGE: XX:XX:XX:XX:XX:XX: 2 -> 0
D/BluetoothEventLoop( 1551): Device property changed: XX:XX:XX:XX:XX:XX property: Connected value: false

【问题讨论】:

  • 你解决了这个问题吗..我也面临同样的问题 hdr = clientSession.connect(clientSession.createHeaderSet());
  • 不,我不知道该怎么做。有时间我会再试一次,但现在我正在做我的另一个项目......
  • @LaLeX..好的,我会尝试修复它。

标签: android bluecove obex


【解决方案1】:
hdr = clientSession.connect(clientSession.createHeaderSet());

应使用值pbap_target字节数组设置标题。

【讨论】:

    【解决方案2】:

    clientSession”连接需要一个目标头。

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 2011-12-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 2014-06-08
      • 1970-01-01
      相关资源
      最近更新 更多