|
很久以前,有很多人问如何自动启动 APP,我说去抄 JAVA ,没人相信。
也有人问 如何用定时器,我也说 去抄 Java。也没人相信。
在 XE5 末期,我就实现了 开机自启动。
XE7 的时候,写了一个简单的 WORD 文档。
现在已经过去很久了,先公开一部分代码吧。
下面是调用代码。
[mw_shl_code=delphi,true]const
FlyReceiverClass = 'com.delphi.flying.CommonReceiver';
FlyReceiverDefaultAction = 'com.delphi.flying.BootReceiver.Default';
procedure TForm1.Button2Click(Sender: TObject);
var
PendingIntent: JPendingIntent;
Intent: JIntent;
FireDate: TDateTime;
ACommonReceiver: JCommonReceiver;
begin
Intent := TJIntent.Create;
ACommonReceiver := TJCommonReceiver.JavaClass.init;
Intent.setClass(TAndroidHelper.Context, ACommonReceiver.getClass);
//由于 Recevicer 写了一个 getAction 的代码,这里随便传一个吧。
Intent.setAction(StringToJString(FlyReceiverDefaultAction));
Intent.putExtra(StringToJString('AutoRunApp'), StringToJString('1'));
PendingIntent := TJPendingIntent.JavaClass.getBroadcast(
TAndroidHelper.Context, 0, Intent,
TJPendingIntent.JavaClass.FLAG_UPDATE_CURRENT);
FireDate := Now + Round((SpinBox1.Value / 60) / 24) +
EncodeTime(Round(SpinBox1.Value / 60) mod 24,
Round(SpinBox1.Value) mod 60, Round(SpinBox2.Value), 0);
if CheckBox1.IsChecked then
begin
TAndroidHelper.AlarmManager.&set(
TJAlarmManager.JavaClass.RTC_WAKEUP,
DateTimeToUnix(FireDate),
PendingIntent);
end
else
begin
TAndroidHelper.AlarmManager.&set(
TJAlarmManager.JavaClass.RTC,
DateTimeToUnix(FireDate),
PendingIntent);
end;
Application.Terminate;
end;[/mw_shl_code]
上面没看到定时器代码吗?
后来,完整教程公开了,下面是地址。
安卓服务,自启动,开机运行app 简单教程
http://2pascal.com/forum.php?mod ... =2977&fromuid=4
(出处: 2Pascal-新时代的Pascal)
|
|