Как установить файлы J2ME .jar на удаленные устройства без сопряжения? - PullRequest
1 голос
/ 07 декабря 2009

Я занимаюсь разработкой приложения J2ME для работы в общественных местах, таких как супермаркеты, торговые центры и т. Д. Итак, я хочу, чтобы я мог установить свое приложение на всех мобильных телефонах поблизости через Bluetooth. Я намерен создать отдельное приложение J2SE для обнаружения устройств и поиска сервисов OBEX. После этого попросите пользователя установить приложение.

Я пытался использовать javax.microedition.io.Connector, но для этого всегда требуется пароль обеих сторон (клиент и сервер).

OBEXClientSessionImpl conn = (OBEXClientSessionImpl) Connector.open(serviceUrl);

Я также нашел obex-install , который делает то, что я хочу, но проблема сопряжения сохраняется.

Есть ли способ отправки / установки файлов .jar программно через Bluetooth без сопряжения или использования фиксированного PIN-кода, чтобы я не мог повторить его на стороне сервера?

Спасибо заранее, Fernando

Ответы [ 3 ]

1 голос
/ 09 декабря 2009

Я разработал Java-приложение, чтобы делать именно то, что вы делаете (сканируйте и пытаетесь передать файл на все найденные устройства), используя bluecove, и оно отлично работало на начальных тестах. В среднесрочной перспективе я планирую открыть инструмент или продать его.

Отвечая на ваш вопрос, я использую что-то вроде этого (упрощенная версия):

    // @todo: scan for devices
    // @todo: for each device search obex push service
    String deviceObexUrl = serviceRecords[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);

    // send file
    ClientSession clientSession = (ClientSession) Connector.open(deviceObexUrl);
    HeaderSet hsConnectReply = clientSession.connect(null);
    if (hsConnectReply.getResponseCode() != ResponseCodes.OBEX_HTTP_OK) {
        return false;
    }

    byte data[] = readAllFile(file);

    HeaderSet headerSet = clientSession.createHeaderSet();
    headerSet.setHeader(HeaderSet.NAME, file.getName());
    headerSet.setHeader(HeaderSet.TYPE, mimeType);
    headerSet.setHeader(HeaderSet.LENGTH, new Long(data.length));
    Operation op = clientSession.put(headerSet);

    OutputStream outputStream = op.openOutputStream();
    // @todo: write all data and close outputStream, op and clientSession
1 голос
/ 07 декабря 2009

Было бы проще с помощью загрузки http OTA. поместите свой jar-файл j2me на веб-сайт, после чего вы сможете разрешить клиенту перенаправить его на этот веб-сайт для загрузки jar-файла. вам не нужен пароль для загрузки OTA.

0 голосов
/ 09 декабря 2009

То, что вы пытаетесь сделать (отправка файлов на мобильное устройство через OBEX), должно быть полностью возможным без сопряжения. Похоже, вы пытаетесь подключиться с использованием аутентификации.

Попробуйте включить параметр "authenticate=false" в URL-адресе соединения (например, btgoep://0123456789abcde:1;authenticate=false).

...