0

OBEX を使用してリモート デバイス フォルダのリストを取得しようとしています。を使用して接続しようとしています

 String btUrl=btgoep://"+mac_address+":10;authenticate=false;encrypt=false;master=false" 

しかし、電話するとサポートされていませんというエラーが表示されます

ClientSession conn = (ClientSession) Connector.open(btURL);

誰でも私を助けることができますか?

4

2 に答える 2

0

ポートが間違っている可能性があります。DiscoveryListener でサービス検索を介して接続アドレスを取得する必要があります。jsr82 では、次のようになります。

    private final UUID L2CAP_UUID = new UUID(0x1106);
    public String getOBEXURL(RemoteDevice dev) {
        DiscoveryAgent discoveryAgent = null;
        try {
            LocalDevice localDevice = LocalDevice.getLocalDevice();
            discoveryAgent = localDevice.getDiscoveryAgent();
        }
        catch (Exception e) {
            return null;
        }

        try {
            discoveryAgent.searchServices(null, new UUID[]{L2CAP_UUID}, dev, this);
        } catch (Exception e) {
            return null;
        }

        synchronized (this) {
            try { wait(); }
            catch (Exception e) {}
        }

        switch (respCode) {
            case SERVICE_SEARCH_DEVICE_NOT_REACHABLE:
                ps.println("Remote device could not be reached");
                break;
            case SERVICE_SEARCH_ERROR:
                ps.println("The service search was terminated with error");
                break;
            case SERVICE_SEARCH_NO_RECORDS:
                ps.println("No services found on device");
                break;
            case SERVICE_SEARCH_TERMINATED:
                ps.println("The service search has been canceled by the application and did not complete");
                break;
        }

        return obexURL;
    }

    public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
        obexURL = servRecord[0].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
    }

    public void serviceSearchCompleted(int transID, int respCode) {
        this.respCode = respCode;
        synchronized (this) { notify(); }
    }
于 2012-05-05T16:38:43.857 に答える