C++ Builder XE10.1 在安卓下把程序进行后台/前台切换代码分享

titan_ysl 2016-06-12 08:10:51
今天做安卓下的程序需要把程序切换到后台,在google是找了一阵,安卓的或.net或Delphi的都有,就是没C++ Builder的,于是只好照着Delphi的改了一份,现在给大家分享出来。

头文件要加一个。
#include <Androidapi.Helpers.hpp>

//切换任务(程序)到后台
void moveTaskToBack(void)
{
_di_JIntent intent;
intent = TJIntent::JavaClass->init();
intent->setAction(TJIntent::JavaClass->ACTION_MAIN);
intent->setFlags(TJIntent::JavaClass->FLAG_ACTIVITY_NEW_TASK);
intent->addCategory(TJIntent::JavaClass->CATEGORY_HOME);
SharedActivity()->startActivity(intent);
}

//得到ActivityManager类指针
_di_JActivityManager SharedActivityManager(void)
{
_di_JObject AService;
AService = SharedActivityContext()->getSystemService(TJContext::JavaClass->ACTIVITY_SERVICE);
_di_JActivityManager ActivityManager;
ActivityManager=TJActivityManager::Wrap(static_cast<_di_ILocalObject>(AService)->GetObjectID());
return ActivityManager;
}

//使用ActivityManager类的切换任务到前台函数。
SharedActivityManager()->moveTaskToFront(SharedActivity()->getTaskId(),TJIntent::JavaClass->FLAG_ACTIVITY_NEW_TASK);

本来delphi的例子中,ActivityManager类中也有个moveTaskToBack函数,不过,不知为什么,在C++ builder的.hpp文件中没找到。
...全文
1324 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysyzqm-zqm 2020-01-15
  • 打赏
  • 举报
回复
做个标记,以后会用到,谢谢楼主
titan_ysl 2016-07-17
  • 打赏
  • 举报
回复
还有一个_di_JFMXNativeActivity接口的,moveTaskToBack函数,这个也是用来把自己的程序隐藏到后台的,和先前的那个函数稍有不同的是,前面的那个是在隐藏后把桌面显出来,而这个是隐藏后把系统的进程队列中最前面的显出来。 使用方法: #include <FMX.Platform.Android.hpp> MainActivity()->moveTaskToBack(true);
w88529593 2016-06-15
  • 打赏
  • 举报
回复
ccrun.com 2016-06-15
  • 打赏
  • 举报
回复
 欢迎分享。
titan_ysl 2016-06-12
  • 打赏
  • 举报
回复
对了,moveTaskToFront函数需要授权使用,在工程文件的Options-Uses Permissions中,要选中Reorder tasks。
delphi / c++ builder 10.1 Berlin 安装Intraweb 14.1.5,仅供学习研究使用 说明:仅供学习研究使用 安装程序太大无法上传,请先到http://www.atozed.com下载iw14.1.5.exe 本人用的是Embarcadero RAD Studio 10.1 Berlin up2 1. 打开IDE,Component / Install Packages...,选择旧版本Intrawebxxxx.bpl,Remove. 2.用IWBundledRemovalTool工具将旧版本文件删除(如果没有此工具可从网上下载或先随便安装一个版本,把此工具复制出来)。 3.如果需要用bcb开发由进行这一步,如只需要用delphi开发则可跳过这步, 将C:\Program Files (x86)\Embarcadero\Studio\18.0\include\windows\vcl目录下IW*.hpp删除。 4.如果需要用bcb开发由进行这一步,如只需要用delphi开发则可跳过这步,本人前几次安装都没有成功, 后面增加了这步,不知道此步是否必须, 将C:\Program Files (x86)\Embarcadero\Studio\18.0\include\windows\vcl目录下, 从InAntiFreezeBase.hpp开始选中到InYarn.hpp,然后将这些文件删除。 5.运行iw14.1.5.exe安装,安装时输入如下LicenseKey(这个号也是网上找到的,由于找了一天也不记得在哪找到的了,感谢作者提供): +0010AAIACIABCAACABCACGABCABAAAGACGABCAAGABEAAEABEABIABEAAGABEAAIABCAACABCACEABEABGABEAAAAAAACGAAAACAAAIAAGABCADAABCACGABEAAAABCAACABCACIABEABIAAGACGAAIAACABEAAIABCADAABEACAABCABAABCAAIAAEAAAABAAAGABCADAABCABCABEAAIABEABEABCAACABEAAEABCABAAAAACGAAAACAAAIAAIABCABAABEABCABCABAABCACEABCADAABEAAAABCABAABEAAEAAGACGABCAAGABEAAEABEABIABEAAGABEAAIABCAACABCACEABEABGABEAAAAAAACGAAAACAAAIABAABEABGABEAAAABCABIABEAAEABCAACABEAAIABCABIABCADAABCACIAAGACGAAGABAAAGABGAAGABCAAGAAAAAGABGAAAACGAAAACAAAIABAABCAAIABCABIABEAAIABCABIABCADAABCACIAAGACGAAIABAAAIACIABAAAIAAAACGAAAACAABAAAGABCABAABEAAEABCABIABCAACABCACEAAIACIABCADAAAGACGAAGAAEAAGAAAAAGAACAAGABCAAGABAAAGAAAAAGABCAAGABGAAGABGAAAACGAAAACAAAIABAABCACGABCAACABCABIABCACEAAGACGAAAACGAAAACAAAIABGABCAACABEAAGABCABGAAGACGAAAACGAAAACAAAHAEDAAFACI 6.安装完成后如果选中License Registration则同样输入上面的LicenseKey。 7.先启动Delphi 10.1 Berlin IDE,Tools/Options,将iw14.1.5.exe安装目录(本人安装到C:\Program Files (x86)\IntraWeb XIV)下的LibD10_1W32、LibD10_1W64、Source三个目录添加到Library Path和Browsing Path。 8.随便创建一个Intraweb应用,选择win32平台,然后运行,报错后修改IWLicenseKey.pas: 将SetLicenseKey(xxxxxxxxxxxxxxxxxx改为: SetLicenseKey( '+0010AAIACIABCAACABCACGABCABAAAGACGABCAAGABEAAEAB'+ 'EABIABEAAGABEAAIABCAACABCACEABEABGABEAAAAAAACGAAA'+ 'ACAAAIAAGABCADAABCACGABEAAAABCAACABCACIABEABIAAGA'+ 'CGAAIAACABEAAIABCADAABEACAABCABAABCAAIAAEAAAABAAA'+ 'GABCADAABCABCABEAAIABEABEABCAACABEAAEABCABAAAAACG'+ 'AAAACAAAIAAIABCABAABEABCABCABAABCACEABCADAABEAAAA'+ 'BCABAABEAAEAAGACGABCAAGABEAAEABEABIABEAAGABEAAIAB'+ 'CAACABCACEABEABGABEAAAAAAACGAAAACAAAIABAABEABGABE'+ 'AAAABCABIABEAAEABCAACABEAAIABCABIABCADAABCACIAAGA'+ 'CGAAGABAAAGABGAAGABCAAGAAAAAGABGAAAACGAAAACAAAIAB'+ 'AABCAAIABCABIABEAAIABCABIABCADAABCACIAAGACGAAIABA'+ 'AAIACIABAAAIAAAACGAAAACAABAAAGABCABAABEAAEABCABIA'+ 'BCAACABCACEAAIACIABCADAAAGACGAAGAAEAAGAAAAAGAACAA'+ 'GABCAAGABAAAGAAAAAGABCAAGABGAAGABGAAAACGAAAACAAAI'+ 'ABAABCACGABCAACABCABIABCACEAAGACGAAAACGAAAACAAAIA'+ 'BGABCAACABEAAGABCABGAAGACGAAAACGAAAACAAAHAEDAAFAC'+ 'I'); 再次运行成功,这样以后就可以开发非体验版的win32 Intraweb应用了。 9.同样再次随便创建一个Intraweb应用,选择win64平台,运行报错后同样 修改IWLicenseKey.pasSetLicenseKey(xxxxxxxxxxxxxxxxxx改为: SetLicenseKey( '+0010AAIACIABCAACABCACGABCABAAAGACGABCAAGABEAAEAB'+ 'EABIABEAAGABEAAIABCAACABCACEABEABGABEAAAAAAACGAAA'+ 'ACAAAIAAGABCADAABCACGABEAAAABCAACABCACIABEABIAAGA'+ 'CGAAIAACABEAAIABCADAABEACAABCABAABCAAIAAEAAAABAAA'+ 'GABCADAABCABCABEAAIABEABEABCAACABEAAEABCABAAAAACG'+ 'AAAACAAAIAAIABCABAABEABCABCABAABCACEABCADAABEAAAA'+ 'BCABAABEAAEAAGACGABCAAGABEAAEABEABIABEAAGABEAAIAB'+ 'CAACABCACEABEABGABEAAAAAAACGAAAACAAAIABAABEABGABE'+ 'AAAABCABIABEAAEABCAACABEAAIABCABIABCADAABCACIAAGA'+ 'CGAAGABAAAGABGAAGABCAAGAAAAAGABGAAAACGAAAACAAAIAB'+ 'AABCAAIABCABIABEAAIABCABIABCADAABCACIAAGACGAAIABA'+ 'AAIACIABAAAIAAAACGAAAACAABAAAGABCABAABEAAEABCABIA'+ 'BCAACABCACEAAIACIABCADAAAGACGAAGAAEAAGAAAAAGAACAA'+ 'GABCAAGABAAAGAAAAAGABCAAGABGAAGABGAAAACGAAAACAAAI'+ 'ABAABCACGABCAACABCABIABCACEAAGACGAAAACGAAAACAAAIA'+ 'BGABCAACABEAAGABCABGAAGACGAAAACGAAAACAAAHAEDAAFAC'+ 'I'); 就可以了。 10.至此delphi下的Intraweb已安装完成,但是如果用C++ Builder开始Intraweb应用, 还是评估版本,程序每次运行端口都会变化此界面上提示是评估版本, 本人的方法是将iw14.1.5.exe的程序目录(本人安装到C:\Program Files (x86)\IntraWeb XIV), 将LibD10_1W32下的IWLicenseKey.pas添加c++ Builder 32位应用中, 那么64位应该就是将LibD10_1W64下的IWLicenseKey.pas添加到c++ Builder 64位应用中,不过本人没有进行测试。

551

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 茶馆
社区管理员
  • 茶馆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧