Delphi 11的Androidapi.JNI.Support新接口函数名如何使用?
你遗漏的两个核心要点
- 你写的
Japp_NotificationCompat_Builder是接口类型,创建实例需要使用对应的TJ前缀类TJapp_NotificationCompat_Builder调用init方法,逻辑和旧版本完全一致,仅类名多了app_前缀。 - Delphi 11中该类的定义从原
Androidapi.JNI.Support单元迁移到了Androidapi.JNI.AndroidX.Core单元,需要在uses中新增版本判断引入对应单元,否则会报未定义错误。
完整跨版本适配代码
单元引用部分
uses Androidapi.Helpers, {$if COMPILERVERSION > 34} Androidapi.JNI.AndroidX.Core; {$else} Androidapi.JNI.Support; {$endif}
功能实现部分
var {$if COMPILERVERSION > 34} ncb: Japp_NotificationCompat_Builder; {$else} ncb: JNotificationCompat_Builder; {$endif} begin {$if COMPILERVERSION > 34} ncb := TJapp_NotificationCompat_Builder.JavaClass.init( TAndroidHelper.Context, StringToJString(CHANNEL_ID) ); {$else} ncb := TJNotificationCompat_Builder.JavaClass.init( TAndroidHelper.Context, StringToJString(CHANNEL_ID) ); {$endif} // 后续setContentTitle、setContentText、setSmallIcon等逻辑完全通用,无需修改 end;
内容的提问来源于stack exchange,提问作者Freddie Bell
相关产品推荐
相关产品推荐

