![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
Randomm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 31.8.2007 Репутация: нет Всего: нет |
Здравствуйте
Хотелось бы узнать у опытных людей, возможно ли осуществить такое: Для готового приложения для телефона в виде .jar файла нужно сделать так, чтобы при первом его запуске на телефоне нужно было его "активировать" - то есть прочитать правила и согласиться с ними или отправить смс или что-то ещё. Возможно ли создать такую обёртку для произвольного приложения и так же оформить её jar файлом? |
|||
|
||||
Green_DiCk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.11.2006 Репутация: нет Всего: нет |
Если есть исходники "произвольного приложения" то ноу проблем. Пишешь свой "защитный" класс, потом в методе startApp() делаешь что-нибудь вроде:
Проверить активировано приложение или нет можно или отправив запрос на сервер (в запросе должны быть уникальные для данной трубки данные) или проверив RMS на наличие соотв. записи. |
|||
|
||||
Randomm |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 31.8.2007 Репутация: нет Всего: нет |
Green_DiCk, спасибо. А если исходников нет?
Можно ли как-то запаковать нужный jar и запускать его из оболочки? |
|||
|
||||
Green_DiCk |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 1.11.2006 Репутация: нет Всего: нет |
Если нет исходников, то можно попробовать декомпиляцию - декомпилировать главный класс мидлета, изменить метод startApp по описанной выше схеме и скомпилировать заново. Правда я декомпиляцией никогда не занимался, поэтому не знаю - может быть все не так просто. Хотя явных препятствий такому способу я тоже не вижу.
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Можно добавить свой мидлет, производный от уже существующего. В его startApp () вставить предложенный код, вместо launch() - super.startApp (). Из манифеста и jad убрать исходый мидлет и вместо него добавить свой. Иногда так может не получиться, да и взломать просто - нужно найти класс оригинального мидлета.
|
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
math64, согласен.
Я так и делал. Такое может не получится если: 1) Класс унаследованный от MIDlet объявлен как final. Вопрос решался изменением одного байта в .class файле. Вот тут мне советуют как можно это исправить. 2) Класс унаследованный от MIDlet не находится в каком-либо пакете (а твоя обвертка находится в пакете). Лечится тем что твоя обвертка делается без пакета. Я startApp не переопределял, а в конструкторе запускал отдельный поток, который и делал все что нужно. |
|||
|
||||
podzamkom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.10.2009 Где: Москва Репутация: нет Всего: нет |
Позвольте напомнить еще один вариант - создание из файла мидлета *.jar защищенного файла с расширением *.dcf при помощи программы DRM упаковщика, например DRM Packager. Программа создает защищенный файл *.dcf и файл прав *.dd , которые (права) пользователь получит через интернет с сервера указанного в защищенном файле. Вся процедура автоматизирована и телефоны (современные) поддерживают этот протокол.
Подробнее не могу сказать, но на форуме есть ветка с одноименным названием. Если кто может к этому что-либо добавить, милости просим! |
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Про эти причины я не думал, а вот Вы запускаете в конструкторе отдельный поток, а ведь также может поступить базовый класс. А его поток запустится первым, в Вашем конструкторе первым делом должен быть вызван конструктор базового класса. Что делает этот поток, Вы не знаете, и он может конфликтовать в Вашим. |
|||
|
||||
eugine_s |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
Собственно, про реализацию этого момента забыл упомянуть. Конечно же, муть может какая-то получиться, если обвертку еще от Runnable наследовать, поэтому сделал это через внутренний класс. Что-то типа вот такого:
|
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |