Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как определить что программа была запущена из AlarmManager? Или how to read boolean from intent


ENERGY

Вопрос

Подскажите пожалуйста как определить что программа запустилась из AlarmManager?

Я сделал это так, по аналогии с http://stackoverflow.com/questions/6751564/how-to-pass-a-boolean-between-intents

В Java коде, который компилиться в итоге в classes.dex (с XE7 не нужен DEX файл, можно подключить Jar файл сразу к проекту!), добавил строчку

public class AlarmReceiver extends BroadcastReceiver {
    public void onReceive(Context context, Intent intent) {
            Intent TestLauncher = new Intent();                        
            TestLauncher.setClassName(context, "com.embarcadero.firemonkey.FMXNativeActivity");
            TestLauncher.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            TestLauncher.putExtra("StartedFromAM", true);
            context.startActivity(TestLauncher);
    }
}

По идее теперь при старте из AlarmManager, должно быть true в активити.

Из Delphi пытаюсь получить это значение, но всегда возвращает false (0). 

 ShowMessage(SharedActivity.getIntent.getBooleanExtra(StringToJString('StartedFromAM'), false).ToString );

И вот так тоже:

ShowMessage ( MainActivity.getIntent.getBooleanExtra(StringToJString('StartedFromAM'), false).ToString);

Не подскажете в чем может быть проблема?


 

Изменено пользователем ENRGY
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Тот же вопрос на http://stackoverflow.com/questions/42368123/how-to-pass-boolean-or-integer-to-intent-and-read-it-to-detect-that-my-activi

Никакие свои аргументы добавлять из Java кода (putExtra) не нужноРешение использовать счетчик EXTRA_ALARM_COUNT: 

uses
  Androidapi.Helpers,
  Androidapi.JNI.GraphicsContentViewText;
...
var
  Intent: JIntent;
...
  Intent := TAndroidHelper.Activity.getIntent;
  if Intent.getIntExtra(TJIntent.JavaClass.EXTRA_ALARM_COUNT, 0) > 0 then
    lblInfo.Text := 'Started by Alarm Manager through FMX Activity';

 

И насчет отправки аргумента при помощи putExtra из Java кода, все работает, просто я протупил, и регистрировал вызов своего активити напрямую (без Broadcast receiver), из примера номер 2 из из этой статьи .

Кстати заодно я узнал что могу вместо Dex подключить Jar файл (начиная с XE7!), и это тоже работает, и гораздо проще! И кстати для примера номер 2 из той статьи (вызов активити напрямую - не нужен ни Dex файл, ни Jar ни манифест). Проверял на новом проекте.

 

Изменено пользователем ENRGY
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...