【问题标题】:delphi/firemonkey: how to implement a callback in the Activity?delphi/firemonkey:如何在Activity中实现回调?
【发布时间】:2016-09-29 23:07:04
【问题描述】:

我需要实现这个功能:

  [JavaSignature('android/app/Activity')]
  JActivity = interface(JContextThemeWrapper)
    ...  
    procedure onRequestPermissionsResult(requestCode: Integer; permissions: TJavaObjectArray<JString>; grantResults: TJavaArray<Integer>); cdecl;
    ....

但是怎么做呢?这个函数只是接收事件,所以我必须重写它,但我不知道怎么做。

【问题讨论】:

  • 你问错问题了。您的问题主题具有误导性。在 Android 中实现事件函数是通过获取已发布侦听器接口的 Delphi 版本并在继承自 Androidapi.JNIBridge 单元中的TJavaLocal 的 Delphi 类中实现的。您正在询问如何在作为整个 Delphi 应用程序基础的 Activity 中实现回调。
  • 谢谢 blong,你是对的,我刚刚更新了问题以更准确:)

标签: java android delphi firemonkey


【解决方案1】:

要在作为 FireMonkey 应用程序基础的 Activity 中实现回调,您必须编写一些 Java 代码来继承 FireMonkey 自己的本机活动子类。

这是相当乏味且充满问题的,并且需要各种命令行“猴子业务”,但我已经为不同的回调编写了流程,onNewIntent in my Delphi XE7 article on supporting NFC tags(Delphi 10 Seattle 完成了这项工作在没有 Java 活动子类化的情况下可行)。我还为the first version of my article on launching Android activities 中的onActivityResult 回调编写了 Delphi XE5 的流程(Delphi XE6 使这项工作成为可能,无需 Java 活动子类化)。

请务必按照这些文章随附的示例更新您的 Android 清单模板文件,以引用新的自定义活动子类,如下所示:

<activity android:name="com.blong.test.NativeActivitySubclass"
          ...

祝你好运。它相当混乱,并且使调试非常困难。

【讨论】:

  • 谢谢 blong,我已经阅读了你所有的博客并观看了你的研讨会 :) 多亏了这个,我已经制作了自己的 classes.dex。我了解如何对任何对象进行子类化,例如 textview,但我不明白如何对 FMXNativeActivity 进行子类化,因为创建它的将是 delphi 而不是我,所以它永远不会用我自己的子类创建(或者我错过了一些东西)。这部分我在您的博客中不太了解,如何使用我自己的子类而不是默认的 FMXNativeActivity 启动主要活动(因为我猜我的 java 代码将无用)
  • 好的,如果您已经熟悉材料和流程,那么您就拥有了所需的所有信息。这两篇文章涵盖了所有必需的步骤(针对有问题的产品版本),并附有显示结果运行良好的示例。如果其中有不清楚的地方,您需要更具体地提出您提出的问题或报告的问题。
  • “我不明白如何对 FMXNativeActivity 进行子类化,因为创建它的将是 delphi 而不是我”-> 哦,实际上我看到文章中没有强调的一件事是需要更改Android 清单文件以在应用程序启动时创建活动子类。我已经相应地更新了我的答案。如果您现在发现这可以解决问题,请对有用的 cmets 进行适当的投票并标记适当的答案(此处和其他最近的问题)。
  • 谢谢布隆!现在可以正常工作了!我还向 emb (quality.embarcadero.com/browse/RSP-15986) 添加了一个功能请求,因为我认为如果所有这些都由 delphi 直接处理,将来会更好
  • @DaveNottage,没有特定于 NFC 的内容,没有。我指的是从底层活动的onNewIntent 方法中获取 Delphi 中的意图,Seattle 将功能添加到 Delphi 代码的表面,而不需要凌乱的袖子滚动。 NFC 文章展示了一个这样做的示例,但this Seattle example 也是如此 - 查看 HTML 自述文件。这类似于 XE6 对 onActivityResult 的支持(也出现在消息传递框架中)。
猜你喜欢
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-18
  • 1970-01-01
相关资源
最近更新 更多