forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Как автообновить JAVA прграммку на мобиле ? (http://forum.boolean.name/showthread.php?t=6073)

jkeks 03.07.2008 15:06

Как автообновить JAVA прграммку на мобиле ?
 
Хочу сделать так чтобы программка установленная на сотовом могла сама себя обновлять, т.е. передавать ссылку системе, которая запустит браузер для установки.
Как это сделать ? Непойму.. а знаю что так делают:SOS:

ViNT 03.07.2008 19:02

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
Это можно сделать с помощью функции platform_request из библиотеки m2.

odd 04.07.2008 08:23

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
Подключаешь библиотеку m2 и вызываешь функцию
типа platform_request('http://tvoi.portal/midlet.jar')
Я такое проделывал в реальных приложениях. Даже чуть сложнее делал.
Сначала скачивал текстовый файл, в котором прописана версия программы, а потом анализировал текущую версию программы с выложенной на сайте и в зависимости от результатов и выбора пользователя скачивал или не скачивал обновленную версию программы.
Я так делал на SE. Nokia, насколько я понял, такого не позволяют.

jkeks 04.07.2008 08:55

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
Поставил, сама функция работает, т.е. запускается стандартный браузер.
Только у меня возник вопрос следующий: После успешной загрузки, стандартный браузер говорит, что KAKA.jar не поддерживается телефоном и записывает программку в папку Прочее (телефон SE K300). Тогда как обновлялся я и не раз из других программок. Мне же надо перезаписать саму себя в папке Приложения. А тут даже выбора нет никакого. Не подскажете в чем проблема может быть ?

jkeks 04.07.2008 09:41

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
попробовал обновить программку чужую (w1) обновилась прекрасно, дело не в телефоне значит

GOODBYTE 04.07.2008 09:45

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
Создай на хостинге с поддержкой PHP документ.
Назови его например index.php , и впиши в него вот этот код :

PHP код:

<?
    $all_versions = array( // массив со всеми версиями программы.
    0 => '1.0.0',
    1 => '1.0.1',
    2 => '1.0.2',
    3 => '1.0.3',
    4 => '1.0.4',
    5 => '1.0.5'
    );
    
    $client_version = isset($_GET['version']) ? $_GET['version'] : $all_versions[0];
    
    if($client_version != $all_versions[sizeof($all_versions)-1])
    {
        echo 'Necessary upgrade.';
    } else {
        echo 'Upgrade does not need.';
    }
    
?>

запомни к нему адрес.

А обращаться из MP к серверу очень просто. :-)
Только вот в библиотеке lib_web от pilgrim'a непонятно почему метод web.get_response ничего не возвращает..

вот код.

Код:

program internet;

uses web;

var                connection : integer;
                                VERSION, resultat : string;       

begin
        VERSION := '1.0.0';       
        connection := web.open('http://localhost/index.php?version=' + VERSION);

        web.set_method('GET');
                                       
        web.set_property('Host', 'localhost');
        web.set_property('Accept', 'text/html');
        web.set_property('Accept-Charset', 'UTF-8');
        web.set_property('Accept-Encoding', 'deflate');
        web.set_property('Accept-Language', 'ru');
        web.set_property('User-Agent', 'MP Browser');
                                                       
                if web.send = 200 then
                                        begin
                                                                       
                                        if web.get_response = 'Necessary upgrade.' then
                                       
                                                begin
                                                       
                                                        DrawText('Обновление',0,0);
                                                        repaint;
                                                        delay(5000);
                                                       
                                                end;
                                       
                                        else
                                               
                                                begin

                                                        DrawText('Всё ок',0,0);
                                                        repaint;
                                                        delay(5000);

                                                end;
               
                                        end;
                        else

                                        begin
                                                                       
                                        DrawText('Ошибка сервера.',0,0);
                                        repaint;
                                        delay(5000);
                                                                       
                                        end;
               
                web.close;

end.


jkeks 04.07.2008 10:46

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
Дак это че, пример как прочитать чего-то, а я хочу инсталлировать.
Есть программа(123.jar) в папке Приложения.
1. Запускаем ее (123.jar)
2. В ней выбираем "Обновить"
3. Программа (123.jar) Запускает встроенный браузер
4. Браузер завершает работу программы
5. Браузер скачивает новую версию 123.jar
6. Браузер Перезаписывает старую версию (123.jar) новой (123.jar)
7. Браузер Предлагает запустить новую версию (123.jar)
Вот так все должно быть.
Данный вначале пример запускает браузер и тот скачивает судя по всему новую версию, но он не может ее перезаписать по причине:
что (123.jar) "не поддерживается телефоном" и записывает программку в папку "Прочее"

GOODBYTE 04.07.2008 13:10

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
Цитата:

Дак это че, пример как прочитать чего-то, а я хочу инсталлировать.
так тебе можно и всю программу написать =))

а по сути добавил ту же m2 библиотеку, и еще почитал бы о функции halt в мануале. И всё.. ))

jkeks 04.07.2008 13:48

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
после вызова r:=platform_request('http://asdasd/123.jar');
сразу делаю halt - не работает так.

ViNT 04.07.2008 14:36

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
Цитата:

Сообщение от jkeks (Сообщение 81718)
после вызова r:=platform_request('http://asdasd/123.jar');
сразу делаю halt - не работает так.

В смысле обновление не происходит или приложение не закрывается?

GOODBYTE 04.07.2008 14:52

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
ViNT, скорее всего не закрывается приложение.
Например, у меня на Symbian открытые приложения переходят в "паузу", т.е. на время отхода меня в меню или куда-то еще в телефоне (но не в приложении) оно приостанавливается.
Скорее всего оно выключится только тогда, когда пользователь вернется в программу..

ViNT 04.07.2008 14:58

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
У меня на SE без проблем Halt'ом закрывается(если поставить его сразу после platform_request.
Вообще, если бы дело было в том, что приложение не закрыто, SE написал бы что-то типа "Ошибка при выполнении операции". А тут, похоже, MIME-тип не распознает. Я в вопросах php не силен, но похоже нужно чтобы сервер передавал верное значение MIME-Type(это не винда, тут расширение файла мало что значит).

GOODBYTE 04.07.2008 15:11

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
PHP код:

<? 
    $all_versions = array( // массив со всеми версиями программы. 
    0 => '1.0.0', 
    1 => '1.0.1', 
    2 => '1.0.2', 
    3 => '1.0.3', 
    4 => '1.0.4', 
    5 => '1.0.5' 
    ); 
     
    $client_version = isset($_GET['version']) ? $_GET['version'] : $all_versions[0]; 
     
    if($client_version != $all_versions[sizeof($all_versions)-1]) 
    { 
        echo 'Necessary upgrade.'; 
    } else { 
        echo 'Upgrade does not need.'; 
    } 
     
?>

если ты про это, то он просто показывает последнюю версию мидлета, ну и собственно возвращает результат.

А насчёт отдачи сервером, то это нужно прописывать расширения в .htaccess , но это при условии что сервер Apache.

Код:

AddType text/vnd.sun.j2me.app-descriptor .jad # для JAD
AddType application/java-archive .jar # для JAR


jkeks 04.07.2008 15:27

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
Да мне не надо проверять: Есть новая версия или нету ее.
Мне надо Проинсталлировать и все.
Проверка у меня давно написана.
Попробовал добавить в htaccess строчки:
AddType text/vnd.sun.j2me.app-descriptor .jad # для JAD
AddType application/java-archive .jar # для JARЭффекта никакого, вот она ссылка мидлетега:
http://freemir.ru/freemir.jar в нем есть кнопочко - Обновить.

ViNT 04.07.2008 15:34

Ответ: Как автообновить JAVA прграммку на мобиле ?
 
SE k510i - полет нормальный.
Запускается загрузка, приложение грузится и устанавливается.


Часовой пояс GMT +4, время: 05:30.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot