Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Автозапуск мидлета по SMS на siemens x65


Автор: AlexKl 21.10.2006, 15:45
Здравствуйте, все! 

Помогите решить проблему.

Есть девайс, отсылающий бинарные SMS на порт 16100. Есть статически зарегистрированный в AMS (Push Registry) мидлет.
Устанвливаю мидлет на C65 или CX65. При запущенном мидлете SMS принимаются. Если приложение не запущено, то в момент прихода SMS загорается желтая звезда (слева над экранной  клавишей) и все. Если нажать клавишу - приложение стартует, SMS обрабатывает.
Подскажите, плиз, почему нет автозапуска?

PS: мидлет подписан. Пробовал на эмуляторе S75 примерно тоже, только вместо звезды пиктограмка письма. На эмуляторах SonyEricsson и стандартном (версии 2.5) автозапуск работает.

Автор: javastic 23.10.2006, 09:32
Как мидлет выходит после первого старта? Что-то есть в методе destroyApp() ??
и было бы неплохо если бы был преведён кусок кода создания пуша.

p.s. вполне возможно что это специфика телефона, а возможно что не хватает привелегий.
В этом телефоне есть что-то типа Разрешить за пуск: только один раз, разрешить, запретить?

Автор: Dancer 23.10.2006, 10:14
javastic, от того что ты говоришь, это сильно не зависит. Так как поведение приложений по Alarm,MIDlet-Push делается производителями по разному. Как правило приложение самостоятельно не запускается а будет задаваться вопрос "запустить или нет" и ждать ответа от пользователя. Многие производители включают ещё такие фишки в свой код телефона, что можно определёнными битами корректировать то или иное поведение, здесь уже нужно точно знать что это за биты, как их менять и т.д. 
Но это уже всё специфично для всех производителей.

Автор: AlexKl 23.10.2006, 19:03
javastic, первый старт и выход ни чем не отличается от последующих. Установил, вышел, передал смс и ... звезда.

connections = PushRegistry.listConnections(true);

if (connections.length != 0) {
    for (int i = connections.length - 1; i >= 0; i--) {
        try {
            mc = (MessageConnection) Connector.open(connections[i]);
            mc.setMessageListener(this);
        }
        catch (java.lang.SecurityException exp) {
        }
        catch (java.io.IOException exp) {
        }
    }
}

Вот код destroyApp. 
thread занимается приемом и разбором SMS. 
smsconn - connection на порт 16100, создается при запуске мидлета (прием SMS при запущенном мидлете).

public void destroyApp(boolean unconditional) {
    thread = null;
    System.out.println("thread destroyed");
    if (smsconn != null) {
        try {
         smsconn.setMessageListener(null);
         smsconn.close();
        } catch (IOException ioe) {
         //ioe.printStackTrace();
        }
    }
}

это часть jad с пушем и разрешениями: 

MIDlet-Push-1: sms://:16100,hello.HelloMidlet,*
MIDlet-Permissions: javax.microedition.midlet.MIDlet.platformRequest,javax.microedition.io.Connector.file.read,
com.siemens.mp.io.File.read,javax.microedition.io.Connector.file.write,com.siemens.mp.io.File.readwrite,
javax.microedition.io.Connector.sms,javax.microedition.io.Connector.sms.send,javax.microedition.io.Connector.sms.receive,
javax.wireless.messaging.sms.receive,javax.wireless.messaging.sms.send,javax.microedition.io.PushRegistry

Разрешения на запуск телефон спрашивает когда нажимаешь кнопку под звездой и только когда мидлет не подписан. 
Когда подпись есть просто пускается и обрабатывет застрявшую в пуше SMS.

Dancer, читал форум Benq там говорят про глюк AMS в этих версиях телефонов, 
НО честно говоря слабо в это верю. 
Видимо действительно есть внутренние настройки производителя. 
Как бы их найти? Пропатчить телефон в моем случае - не применимо.

Автор: Dancer 24.10.2006, 09:19
Как вариант - задай на сайте Benq вопрос, в каких версиях прошивки можно проверить корректность работы данной фичи. Далее на какой-нить форум, где обладатели Simens-ов тусуются, попросить их проверить на своих аппаратах твой мидлет (урезанный или полный, тебе решать), на корректность работы (той что ты ожидаешь). Если же производитель заявляет, что это глюк AMS, и они об этом знают, то пусть назовут новую версию прошивки, в которой это уже работает, или линейку аппаратов, начиная с которой это уже будет работать так как заявлено.  Ну или пусть производитель оттестирует твой мидлет. (если всё корректно опишешь на официальном сайте)
По поводу, как ругаться с производителями - это лучше к javastic, он, если мне память не изменяет, с СониЁриками ругался smile

Автор: Vladimir35 27.10.2006, 15:10
Кажется у Сименсов такое поведение задано по дефолту. То есть при получение смс на определенный порт, оно сохраняется как обычно. А при попытке его просмотреть вызывается ассоциированная программа.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)