Delphi XE Android 程序切换到后台及从后台切换到前台实现


本文整理自网络,侵删。

 介绍

本文章介绍了[FMX]将 Android 程序切换到后台及从后台切换到前台实现,有时候,我们需要将自己的Android程序切换到后台运行,在必要时,将其切换到前台运行。下面提供了一种实现方式,首先需要引用三个单元:


uses Androidapi.JNI.App,Androidapi.JNI.GraphicsContentViewText,Androidapi.Helpers;
复制代码



将应用程序切换到后台,这里提供了两种方法,一种是将应用切换回桌面来实现,执行后相当于按下 Home 键:


procedure SendAppToBack(Sender: TObject);
var
  intent:JIntent;
begin
intent:= TJIntent.Create;
intent.setAction(TJIntent.JavaClass.ACTION_MAIN);
intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(TJIntent.JavaClass.CATEGORY_HOME);
SharedActivityContext.startActivity(intent);
end;



另一种办法是调用 JActivityManager.moveTaskToBack 函数,这种相当于按下返回键,但程序没有退出。我们先需要实现一个 ActivityManager 的服务实例,XE7 没有提供默认函数,咱们模仿写一个,这个函数在后面将程序切换到前台时一样需要用到:


function SharedActivityManager: JActivityManager;
var
  AService: JObject;
begin
AService := SharedActivityContext.getSystemService(TJContext.JavaClass.ACTIVITY_SERVICE);
Result := TJActivityManager.Wrap((AService as ILocalObject).GetObjectID);
end;
复制代码



现在切换到后台,只需要一句代码:


procedure SendAppToBack;
begin
SharedActivityManager.moveTaskToBack(SharedActivity.getTaskId,TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
end;



反过来,切换到前台也只需要一句代码:


procedure BringAppToFront;
begin
SharedActivityManager.moveTaskToFront(SharedActivity.getTaskId,TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
end;




使用 moveTaskToBack/moveTaskToFront 需要注意,应用程序需要 reorder tasks 的授权(自己到项目设置里勾选上就OK了)。

相关阅读 >>

Delphi midstr 返回指定范围内的字符串

Delphi 万年历 程序源码下部分(包括:农历计算、24节气、星期计算、属相)

Delphi 得到文件创建时间,修改时间,访问时间

如何在Delphi中获取字符串字节数?

Delphi tfontdialog

Delphi 键盘钩子的简单应用

Delphi 检测文件是否被占用

Delphi取得桌面工作区域的大小

Delphi 字符串分割

Delphi2010新功能:tdirectory.getfiles 支持通配符

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...