| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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, он, если мне память не изменяет, с СониЁриками ругался |
| Автор: Vladimir35 27.10.2006, 15:10 |
| Кажется у Сименсов такое поведение задано по дефолту. То есть при получение смс на определенный порт, оно сохраняется как обычно. А при попытке его просмотреть вызывается ассоциированная программа. |