|  | 
 
| 很久以前,有很多人问如何自动启动 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)
 
 | 
 |