-
Постов
75 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Сообщения, опубликованные fsdb
-
-
понял. а как хотя бы на 5 секунд отложить старт?по моим ощущениям код просто игнорируется. Ява компилятор вроде ошибку не пишет,
import java.*; ...................... long currenttime = System.currentTimeMillis(); long checktime = 0; // waits for 30 seconds (30000 milliseconds) while ((checktime = System.currentTimeMillis()) < (currenttime + 30000)){ //do nothing }
Про AlarmManager я ознакомился в Вашей статье, но там получается что нужно знать точное время. в данном случае я не знаю точного времени рестарта ОС.
-
подскажите пожалуйста отложенный запуск после старта ОС.......
на данный момент код такой и НЕ РАБОТАЕТ старт именно прилоежния - закрывается после старта. сервис стартует норм.
package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import java.io.File; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent TestLauncher = new Intent(); //создаем класс File f = new File("/sdcard/Android/data/com.embarcadero.PanelControl/files/ehs_setting/run_app.txt"); //файл - при наличии которого выполняется автозапуск if(!f.exists()){ TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); } else { TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity"); TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(TestLauncher); } } } }
-
как узнать из сервиса запущено ли основное приложение? если запущено то не выводить уведомления в шторку например
-
в общем не стал париться особо и просто сделал так:
package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import java.io.File; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent TestLauncher = new Intent(); //создаем класс File f = new File("/sdcard/Android/data/com.embarcadero.PanelControl/files/ehs_setting/run_app.txt"); //файл - при наличии которого выполняется автозапуск if(!f.exists()){ TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); } else { TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity"); TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(TestLauncher); } } } }
-
Добрый день, как сделать паузу, что бы приложение стартовало на много позже. например секунд через 30 после перегрузки ОС. пытался так - не вышло .
У меня ОС убивает мое приложение почти сразу на старте - 1-3 секунды работы моей программы
long currenttime = System.currentTimeMillis(); long checktime = 0; // waits for 30 seconds (30000 milliseconds) while ((checktime = System.currentTimeMillis()) < (currenttime + 30000)){ //do nothing } Intent AppLauncher = new Intent(); AppLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity"); AppLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(AppLauncher);
-
Ребята, я перечитал тему и понял что сервис не может общаться с формой. но мне это не нужно. можно ли просто запустить из сервиса приложение - не передавая ему никакие данные... просто запустить?..
суть проблемы - сервис запустился после старта ОС. если есть файл run.txt на внешней карте, то запускает само приложение. если нету то ничего не далает.
самое оптимальное это писать в BootCompletedReceiver.java код (склеивать classes.dex)? привел примерный псевдокод. я не знаю как на яве проверить есть ли такой файл..
а есть ли другие способы просто запустить из сервиса само приложение? или железно нет.???
дополнительно может ли сервис как то знать - запущено ли приложение основное - надо ли давать в шторку информацию или мы и так её видем в приложении
package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); //запустили сервис. нужен всегда что бы давать в шторки сообщения >>>>>>>>>>>>>>>>>>>>>>>> if (fileexist("run.txt")) then { TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity"); TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(TestLauncher); } >>>>>>>>>>>>>>>>>>>>>>>> //запустили сразу приложение если нужно } } }
-
Огромное спасибо.я очень доволен. Напишу для всех пост. м.б. кому пригодится
неправильно указали имя пакета для java класса, т.е. если указано
com.PanelControlReceiver
то и сам java файл должен лежать в папке eHSforAndroid\Application\java\src\com\PanelControlReceiver\
-
Ваш проект прекрасно запускается после растарта системыНасколько я понял упоминание есть в манифестах:Промежуточный:Конечный:Вероятно вторая причина. classes.dex не правильно клеился или формируется. Хотелось бы узнать причину. Как понять, что файлы формируются не верные.Исходный код я скинул в личку.Спасибо!!!!
-
спасибо что ответили, ошибок не получаю.пути в бат файле
if x%ANDROID% == x set ANDROID=C:\Users\Public\Documents\Embarcadero\Studio\17.0\PlatformSDKs\android-sdk-windows\ set ANDROID_PLATFORM=%ANDROID%\platforms\android-22 set DX_LIB=%ANDROID%\build-tools\22.0.1\lib set EMBO_DEX="C:\DB\eHomeSmartMobile\eHSforAndroid\Application\Android\Debug\classes.dex" set PROJ_DIR=%CD% set VERBOSE=0
если удалить папку output то она каждый раз создается заново с файлами test_classes.dex, classes.dex, BootCompletedReceiver.class,test_classes.jar
Скриншот конечного манифеста
https://yadi.sk/i/EreQmlmtpvE7h
Очень хотелось бы реализовать это по Вашей статье...
у меня с сервисами вообще какая то большая проблема. ниразу не удалось Остановить работу по breakpoint в внутри сервиса. я перечитал форум и у одного формутчанина тоже так не работало - даже тут не работает дебагер
м.б. проблема в этом как раз......
uses Androidapi.JNI.App; function TAndroidServiceDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; begin Result := TJService.JavaClass.START_STICKY; end;
В стандартных Samples где есть примеры по сервисам - тоже нигде не останавливается по breakpoint
порекомендуйте пожалуйста что нибудь для решения проблемы
-
Все равно не смог по статье повторить. прошу помочь и поправьте меня
в манифесте добавил
<receiver android:name="com.PanelControlReceiver.BootCompletedReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED" android:enabled="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>
в яве файле написал, запустил батник. все файлы создались.package com.PanelControlReceiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class BootCompletedReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent TestLauncher = new Intent(); TestLauncher.setClassName(context, "com.embarcadero.services.PanelControlService"); context.startService(TestLauncher); } } }
сервис запускаю так, он запускается, когда приложение закрываю - вижу что сервис дальше работает. после перезагрузки не стартует сервис зановоServiceHandle:=TLocalServiceConnection.Create; ServiceHandle.StartService('PanelControlService'); ServiceHandle.Free;
замену класса сделал. вот скрин https://yadi.sk/i/FbVOPXOSpv3Qsправа дал приложению . https://yadi.sk/i/WwAwCWEypv3iBнадо ли давать права такие же сервису? -
решение:
меняем на java -jar что бы понять что случилось - далее в гугл и.. делаем Downgrade jdk
-
-
-
Я попробывал на телефоне с другой версией андройда - 5.0.2 - то же самое . точка оставнова не срабатывает.
подскажите порядок. может я что то элементарное не знаю, не так давно пользуюсь Firemonkey?..
В любом сервисе не могу поймать брекпоинт.
Я в менеджере проекта активирую двойным кликом приложение (а не сервис) и запускаю приложение. это верно? или что то еще нужно делать?
-
Rusland я так и понял. у вас update 1 есть?
-
Добрый день. на андройде в D10 Seattle компилируется без ошибок и запускается пример.
C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\AndroidNotificationServiceDemo
я подозреваю что у меня не работает на телефоне данный пример. что должно произойти?
я пытаюсь отловить событие тут, но оно просто не наступает .
вообще любое приложение где я добавляю сервис и пытаюсь отдебажить в сервисе событие в данном участке кода - не удается поймать.
в приложении получается. в приложениях сервис не появляется.
как должно было быть? у меня опыта нет
-
куда в сервисе прописать данный код что бы он выводил сообщения
n:= form1.NotificationCenter1.CreateNotification;
n.Name:='123';
n.Title:='567';
n.AlertBody:='890';
n.AlertAction:='qwe';
n.EnableSound:=true;
form1.NotificationCenter1.ScheduleNotification(n); -
Вы получили в сервисе сигнал, создавайте локальное сообщение и будет там все и вибро и звук все как у Push.
Затем по клику сообщения и откроется ваша программа.
Здравствуйте , я не понимаю всех возможностей и поэтому спрошу.
Хочу в сервисе для андройда (10 дельфи), обратиться по tcp/ip, послать через NotificationCenter сообщеение (ярлык) что есть новые данные. - по нему запустится приложение
-
жаль что нет реализации без java, вроде обычная задача и в тоже время очень важная на мой взгляд
в Delphi 10 не появилось иной реализации?
-
как организовать автозапуск приложения после перезагрузки телефона? есть сторонние программы на плей маркете но хотелось бы собственными средствами
-
ребята скажите как сделать так что бы после перезагрузки телефона сервис дальше работал
допустим запустил я приложение. оно запустило сревис.. я вышел из приложения и смотрю что сервис реальноработает как на видео, но процессо рабочих пишет :0
открываю другие приложения чужие - там всегда висит кроме сервиса хотя бы 1 процесс.
майл агент например: процессов 1, серовосв: 1. и так далее. т.е. везде процесс не закрыт.
я выбрал LocalService как на видео. где прочесть что такое IntentLocalService
-
создаю пустое приложение. кидаю кнопку и в ней пишу Application.FormFactor.Orientations := [TFormOrientation.InvertedLandscape];
после выполнения этого приложение закрывается.
другие приложения где это есть - сразу на segmentation fault ругаются
в Delpphi 10 Seatte, в Delphi xe8 работало.
и почему combobox.text:=st1.Text; не добавляет позиций а делает combobox.text ипустым
-
тот же самый баг. никак не могу сохранить настройки и запуститься в отладке. в Project Explorer выбрал debug
[Статья][Android] Автозапуск приложения после перезагрузки ОС
в Статьи и заметки
Опубликовано · Изменено пользователем fsdb
to Andrey Efimov: Спасибо, извиняюсь, сообщения лишние удалил
Короче вот рабочий код - нормальный автозапуск отложенный!!! мое приложение больше не закрывает ОС и все работает отлично!!!!
Отредактировано: