Android实例-退出程序(XE8+小米2)

Android实例-退出程序(XE8+小米2)_·IT业界

 

 

  1 unit Unit1;
  2 
  3 interface
  4 
  5 uses
  6   System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  7   FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  8   FMX.Controls.Presentation, FMX.StdCtrls;
  9 
 10 type
 11   TForm1 = class(TForm)
 12     Button1: TButton;
 13     Button2: TButton;
 14     Button3: TButton;
 15     Label1: TLabel;
 16     Button4: TButton;
 17     Button5: TButton;
 18     Button6: TButton;
 19     procedure Button1Click(Sender: TObject);
 20     procedure Button2Click(Sender: TObject);
 21     procedure Button3Click(Sender: TObject);
 22     procedure FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
 23       Shift: TShiftState);
 24     procedure Button4Click(Sender: TObject);
 25     procedure Button6Click(Sender: TObject);
 26     procedure Button5Click(Sender: TObject);
 27   private
 28     { Private declarations }
 29   public
 30     { Public declarations }
 31   end;
 32 
 33 var
 34   Form1: TForm1;
 35 
 36 implementation
 37 uses
 38 FMX.Platform.Android,
 39 FMX.Helpers.Android,
 40 Androidapi.JNI.Net,
 41 Androidapi.JNI.GraphicsContentViewText,
 42 Androidapi.JNI.JavaTypes,
 43 Androidapi.Helpers,
 44 system.IOUtils;
 45 
 46 {$R *.fmx}
 47 {$R *.NmXhdpiPh.fmx ANDROID}
 48 {$R *.LgXhdpiPh.fmx ANDROID}
 49 {$R *.Macintosh.fmx MACOS}
 50 {$R *.XLgXhdpiTb.fmx ANDROID}
 51 {$R *.LgXhdpiTb.fmx ANDROID}
 52 {$R *.GGlass.fmx ANDROID}
 53 
 54 procedure TForm1.Button1Click(Sender: TObject);
 55 begin
 56   Label1.Text := '按返回键将会出现一个对话框!';
 57 end;
 58 
 59 procedure TForm1.Button2Click(Sender: TObject);
 60 begin
 61   MainActivity.finish; { 退出程序 }
 62 end;
 63 
 64 procedure TForm1.Button3Click(Sender: TObject);
 65 begin
 66   {$IFDEF ANDROID}
 67     Application.MainForm.DisposeOf; { 退出程序 }
 68     halt(0);
 69   {$ENDIF}
 70 end;
 71 
 72 procedure TForm1.Button4Click(Sender: TObject);
 73 var
 74   Intent: JIntent;
 75 begin
 76   Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_MAIN);
 77   Intent.addCategory(TJIntent.JavaClass.CATEGORY_HOME);
 78   Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
 79   SharedActivityContext.startActivity(Intent);
 80 end;
 81 
 82 procedure TForm1.Button5Click(Sender: TObject);
 83 begin
 84   Application.Terminate;
 85 end;
 86 
 87 procedure TForm1.Button6Click(Sender: TObject);
 88 begin
 89   Close;
 90 end;
 91 //此代码报错,不可用,原因不明。
 92 procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; var KeyChar: Char;
 93   Shift: TShiftState);
 94 begin
 95   if Key = vkHardwareBack then//如果按下物理返回键
 96   begin
 97     Label1.Text := '1';
 98     if MessageDlg('确认退出吗?', TMsgDlgType.mtConfirmation,
 99     [TMsgDlgBtn.mbOK, TMsgDlgBtn.mbCancel], -1) = mrOK then
100       MainActivity.finish; { 退出程序 }
101     Key := 0;//必须的,不然按否也会退出
102     Exit;
103   end;
104 end;
105 
106 end.