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

BroadcastReceiver в сервисе


tromani

Вопрос

Собственно сабж, перенес из основной программы в сервис ничего не работает может чтото не так делаю подскажите

смысл в том чтоб в сервисе обрабатывать входящие смс

unit utMainsmsResolver;

interface

uses
  System.SysUtils,
  System.Classes,
  System.Android.Service,
  AndroidApi.JNI.GraphicsContentViewText,
  Androidapi.JNI.Os,
  Androidapi.JNI.App,
  CSBroadcastReceiver,
  Androidapi.JNI.JavaTypes,
  IdHTTP, IdCoderMIME,RR.HTTPwider,

  Androidapi.Jni,
  Androidapi.Helpers,
  Androidapi.JNI.Provider,
  Androidapi.JNI.Net,
  Androidapi.JNIBridge,
  Androidapi.JNI.Telephony;

type
  TDM = class(TAndroidIntentService)
    function AndroidServiceStartCommand(const Sender: TObject;
      const Intent: JIntent; Flags, StartId: Integer): Integer;
    procedure AndroidServiceDestroy(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure CreateBroadcastReceiver;
    procedure BroadcastReceiverOnReceive(csContext: JContext; csIntent: JIntent);
    procedure CheckSmsInState(Context: JContext; Intent: JIntent);
  end;

var
  DM: TDM;
  BroadcastReceiver: TCSBroadcastReceiver;

implementation

{%CLASSGROUP 'FMX.Controls.TControl'}

{$R *.dfm}

procedure TDM.CreateBroadcastReceiver;
begin
  if not Assigned(BroadcastReceiver) then
    begin
      BroadcastReceiver:= TCSBroadcastReceiver.Create(nil);
      BroadcastReceiver.OnReceive:= BroadcastReceiverOnReceive;
      BroadcastReceiver.RegisterReceive;
      BroadcastReceiver.Add('android.provider.Telephony.SMS_RECEIVED',-1);
    end;
end;

procedure TDM.BroadcastReceiverOnReceive(csContext: JContext; csIntent: JIntent);
begin
  CheckSmsInState(csContext, csIntent);
end;

procedure TDM.CheckSmsInState(Context: JContext; Intent: JIntent);
begin
  // чтото делаем с смс
end;

procedure TDM.AndroidServiceDestroy(Sender: TObject);
begin
  if Assigned(BroadcastReceiver) then
    FreeAndNil(BroadcastReceiver);
end;

function TDM.AndroidServiceStartCommand(const Sender: TObject;
  const Intent: JIntent; Flags, StartId: Integer): Integer;
begin
  CreateBroadcastReceiver;
  Result:=TJService.JavaClass.START_STICKY;
  //CreateBroadcastReceiver;
end;

пробовал метод 

CreateBroadcastReceiver

вставлять и до и после start_sticky и в onCreate результат один ничего не происходит

версия IDE - berlin

повторюсь если в коде основной программы то все работает на ура

Ссылка на комментарий

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

Ответов пока нет

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

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

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

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

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

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

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

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

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