Есть код службы переднего фона которая прекрасно работает на Андроид 8.1 Послала арк человеку у которого Андроид 7. Приложение падает после сплеш скрина. Я думаю что ошибка в последнем begin end. Телефона с Андроид 7 у меня нет.
Не подскажите что там исправить? RAD 10.3 Спасибо.
interface
uses
System.SysUtils,
System.Classes,
System.Android.Service,
AndroidApi.JNI.GraphicsContentViewText,
Androidapi.JNI.Os,
Androidapi.JNI.App,
Androidapi.JNI.Support,
Androidapi.JNI.JavaTypes,
Androidapi.Helpers,
Androidapi.JNIBridge,
Androidapi.Jni;
type
TDM = class(TAndroidService)
function AndroidServiceStartCommand(const Sender: TObject;
const Intent: JIntent; Flags, StartId: Integer): Integer;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DM: TDM;
implementation
{%CLASSGROUP 'FMX.Controls.TControl'}
{$R *.dfm}
function TDM.AndroidServiceStartCommand(const Sender: TObject;
const Intent: JIntent; Flags, StartId: Integer): Integer;
var
ServiceChannel: JNotificationChannel;
NotificationManager: JNotificationManager;
Obj: JObject;
NewIntent: JIntent;
ncb: JNotificationCompat_Builder;
ntf: JNotification;
PendingIntent: JPendingIntent;
begin
Result := TJService.JavaClass.START_NOT_STICKY;
if TJBuild_VERSION.JavaClass.SDK_INT > TJBuild_VERSION_CODES.JavaClass.O then
begin
// 28 > 26
ServiceChannel := TJNotificationChannel.JavaClass.init(
StringtoJString('com.radio.one'),
StrToJCharSequence('Public radio Channel'),
TJNotificationManager.JavaClass.IMPORTANCE_DEFAULT
);
Obj := TAndroidHelper.Context.getSystemService(
TJContext.JavaClass.NOTIFICATION_SERVICE);
NotificationManager := TJNotificationManager.Wrap(Obj);
NotificationManager.createNotificationChannel(ServiceChannel);
PendingIntent := TJPendingIntent.JavaClass.getActivity(
JavaService.getApplicationContext, 0, Intent, 0
);
ncb := TJNotificationCompat_Builder.JavaClass.init(
TAndroidHelper.Context,
StringToJString('com.radio.one')
);
ncb.setContentTitle(StrToJCharSequence('PublicRadio'));
// ncb.setTicker(StrToJCharSequence('Communications Service'));
ncb.setSmallIcon(JavaService.getApplicationInfo.icon);
ncb.setContentIntent(PendingIntent);
ncb.setOngoing(True);
ntf := ncb.build;
end
else
begin
// earlier notification code (worked under 10.2.3, targetting API 14)
PendingIntent := TJPendingIntent.JavaClass.getActivity(
JavaService.getApplicationContext, 0, Intent, 0
);
ntf := TJNotification.Create;
ntf.icon := JavaService.getApplicationInfo.icon;
ntf.setLatestEventInfo(
JavaService.getApplicationContext,
StrToJCharSequence('PublicRadio'),
StrToJCharSequence('PublicRadioService'), PendingIntent);
end;
JavaService.startForeground(StartId, ntf);
end;
end.
Вопрос
Ingalime
Здравствуйте.
Есть код службы переднего фона которая прекрасно работает на Андроид 8.1 Послала арк человеку у которого Андроид 7. Приложение падает после сплеш скрина. Я думаю что ошибка в последнем begin end. Телефона с Андроид 7 у меня нет.
Не подскажите что там исправить? RAD 10.3 Спасибо.
interface uses System.SysUtils, System.Classes, System.Android.Service, AndroidApi.JNI.GraphicsContentViewText, Androidapi.JNI.Os, Androidapi.JNI.App, Androidapi.JNI.Support, Androidapi.JNI.JavaTypes, Androidapi.Helpers, Androidapi.JNIBridge, Androidapi.Jni; type TDM = class(TAndroidService) function AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; private { Private declarations } public { Public declarations } end; var DM: TDM; implementation {%CLASSGROUP 'FMX.Controls.TControl'} {$R *.dfm} function TDM.AndroidServiceStartCommand(const Sender: TObject; const Intent: JIntent; Flags, StartId: Integer): Integer; var ServiceChannel: JNotificationChannel; NotificationManager: JNotificationManager; Obj: JObject; NewIntent: JIntent; ncb: JNotificationCompat_Builder; ntf: JNotification; PendingIntent: JPendingIntent; begin Result := TJService.JavaClass.START_NOT_STICKY; if TJBuild_VERSION.JavaClass.SDK_INT > TJBuild_VERSION_CODES.JavaClass.O then begin // 28 > 26 ServiceChannel := TJNotificationChannel.JavaClass.init( StringtoJString('com.radio.one'), StrToJCharSequence('Public radio Channel'), TJNotificationManager.JavaClass.IMPORTANCE_DEFAULT ); Obj := TAndroidHelper.Context.getSystemService( TJContext.JavaClass.NOTIFICATION_SERVICE); NotificationManager := TJNotificationManager.Wrap(Obj); NotificationManager.createNotificationChannel(ServiceChannel); PendingIntent := TJPendingIntent.JavaClass.getActivity( JavaService.getApplicationContext, 0, Intent, 0 ); ncb := TJNotificationCompat_Builder.JavaClass.init( TAndroidHelper.Context, StringToJString('com.radio.one') ); ncb.setContentTitle(StrToJCharSequence('PublicRadio')); // ncb.setTicker(StrToJCharSequence('Communications Service')); ncb.setSmallIcon(JavaService.getApplicationInfo.icon); ncb.setContentIntent(PendingIntent); ncb.setOngoing(True); ntf := ncb.build; end else begin // earlier notification code (worked under 10.2.3, targetting API 14) PendingIntent := TJPendingIntent.JavaClass.getActivity( JavaService.getApplicationContext, 0, Intent, 0 ); ntf := TJNotification.Create; ntf.icon := JavaService.getApplicationInfo.icon; ntf.setLatestEventInfo( JavaService.getApplicationContext, StrToJCharSequence('PublicRadio'), StrToJCharSequence('PublicRadioService'), PendingIntent); end; JavaService.startForeground(StartId, ntf); end; end.
Ссылка на комментарий
3 ответа на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.