如何使用DELPHI更改Android设备通知中的小图标图像

2024-02-19

有没有办法用Delphi更改Android应用程序通知中的小图标图像(默认使用的应用程序图标)?

轻松创建通知的标准方法是:

var
  aNotification: TNotification;
begin   
  aNotification:= aNotificationCenter.CreateNotification;
  try
    aNotification.Name:= 'Notification Name';
    aNotification.Title:= 'Notification Title';
    aNotification.AlertBody:= 'Notification Alert Body';
    aNotification.EnableSound:= False;
    aWorkNotification.Number:= 1;
    aNotificationCenter.PresentNotification(aNotification);
  finally
    aNotification.Free;
  end;
end;

我知道 Java 的解决方案,但我不知道如何在 Delphi 中进行相同的编程。

有人给我建议吗?


首先,准备 png 格式的图标(16 x 16,例如命名为 ic_test)。使用部署将 png 图标保存到以下目录:

res\drawable-ldpi\
res\drawable-mdpi\
res\drawable-hdpi\
res\drawable-xhdpi\
res\drawable-xxhdpi\

然后使用以下代码:

.
.
var
  Ntf: JNotification;
  ntfBuilder: JNotificationCompat_Builder;
  ntfManager: JNotificationManager;
.
.
  ntfBuilder:= TJNotificationCompat_Builder.JavaClass.init(TAndroidHelper.Context);
  ntfBuilder.setSmallIcon(TAndroidHelper.Context.getResources.getIdentifier(StringToJString('ic_test'), StringToJString('drawable'), TAndroidHelper.Context.getPackageName));
  ntfBuilder.setContentTitle(StrToJCharSequence('Content Title'));
  ntfBuilder.setContentText(StrToJCharSequence('Content Test'));
  ntfBuilder.setAutoCancel(True);

  Ntf:= ntfBuilder.build;

  ntfManager:= TJNotificationManager.Wrap((TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE) as ILocalObject).GetObjectID);
  ntfManager.notify(1, Ntf);
.
.

如果您想使用内置系统图标,请使用此常量

const
  r_drawable_alert_dark_frame = 17301504;
  r_drawable_alert_light_frame = 17301505;
  r_drawable_arrow_down_float = 17301506;
  r_drawable_arrow_up_float = 17301507;
  r_drawable_bottom_bar = 17301658;
  r_drawable_btn_default = 17301508;
  r_drawable_btn_default_small = 17301509;
  r_drawable_btn_dialog = 17301527;
  r_drawable_btn_dropdown = 17301510;
  r_drawable_btn_minus = 17301511;
  r_drawable_btn_plus = 17301512;
  r_drawable_btn_radio = 17301513;
  r_drawable_btn_star = 17301514;
  r_drawable_btn_star_big_off = 17301515;
  r_drawable_btn_star_big_on = 17301516;
  r_drawable_button_onoff_indicator_off = 17301518;
  r_drawable_button_onoff_indicator_on = 17301517;
  r_drawable_checkbox_off_background = 17301519;
  r_drawable_checkbox_on_background = 17301520;
  r_drawable_dark_header = 17301669;
  r_drawable_dialog_frame = 17301521;
  r_drawable_dialog_holo_dark_frame = 17301682;
  r_drawable_dialog_holo_light_frame = 17301683;
  r_drawable_divider_horizontal_bright = 17301522;
  r_drawable_divider_horizontal_dark = 17301524;
  r_drawable_divider_horizontal_dim_dark = 17301525;
  r_drawable_divider_horizontal_textfield = 17301523;
  r_drawable_edit_text = 17301526;
  r_drawable_editbox_background = 17301528;
  r_drawable_editbox_background_normal = 17301529;
  r_drawable_editbox_dropdown_dark_frame = 17301530;
  r_drawable_editbox_dropdown_light_frame = 17301531;
  r_drawable_gallery_thumb = 17301532;
  r_drawable_ic_btn_speak_now = 17301668;
  r_drawable_ic_delete = 17301533;
  r_drawable_ic_dialog_alert = 17301543;
  r_drawable_ic_dialog_dialer = 17301544;
  r_drawable_ic_dialog_email = 17301545;
  r_drawable_ic_dialog_info = 17301659;
  r_drawable_ic_dialog_map = 17301546;
  r_drawable_ic_input_add = 17301547;
  r_drawable_ic_input_delete = 17301548;
  r_drawable_ic_input_get = 17301549;
  r_drawable_ic_lock_idle_alarm = 17301550;
  r_drawable_ic_lock_idle_charging = 17301534;
  r_drawable_ic_lock_idle_lock = 17301535;
  r_drawable_ic_lock_idle_low_battery = 17301536;
  r_drawable_ic_lock_lock = 17301551;
  r_drawable_ic_lock_power_off = 17301552;
  r_drawable_ic_lock_silent_mode = 17301553;
  r_drawable_ic_lock_silent_mode_off = 17301554;
  r_drawable_ic_media_ff = 17301537;
  r_drawable_ic_media_next = 17301538;
  r_drawable_ic_media_pause = 17301539;
  r_drawable_ic_media_play = 17301540;
  r_drawable_ic_media_previous = 17301541;
  r_drawable_ic_media_rew = 17301542;
  r_drawable_ic_menu_add = 17301555;
  r_drawable_ic_menu_agenda = 17301556;
  r_drawable_ic_menu_always_landscape_portrait = 17301557;
  r_drawable_ic_menu_call = 17301558;
  r_drawable_ic_menu_camera = 17301559;
  r_drawable_ic_menu_close_clear_cancel = 17301560;
  r_drawable_ic_menu_compass = 17301561;
  r_drawable_ic_menu_crop = 17301562;
  r_drawable_ic_menu_day = 17301563;
  r_drawable_ic_menu_delete = 17301564;
  r_drawable_ic_menu_directions = 17301565;
  r_drawable_ic_menu_edit = 17301566;
  r_drawable_ic_menu_gallery = 17301567;
  r_drawable_ic_menu_help = 17301568;
  r_drawable_ic_menu_info_details = 17301569;
  r_drawable_ic_menu_manage = 17301570;
  r_drawable_ic_menu_mapmode = 17301571;
  r_drawable_ic_menu_month = 17301572;
  r_drawable_ic_menu_more = 17301573;
  r_drawable_ic_menu_my_calendar = 17301574;
  r_drawable_ic_menu_mylocation = 17301575;
  r_drawable_ic_menu_myplaces = 17301576;
  r_drawable_ic_menu_preferences = 17301577;
  r_drawable_ic_menu_recent_history = 17301578;
  r_drawable_ic_menu_report_image = 17301579;
  r_drawable_ic_menu_revert = 17301580;
  r_drawable_ic_menu_rotate = 17301581;
  r_drawable_ic_menu_save = 17301582;
  r_drawable_ic_menu_search = 17301583;
  r_drawable_ic_menu_send = 17301584;
  r_drawable_ic_menu_set_as = 17301585;
  r_drawable_ic_menu_share = 17301586;
  r_drawable_ic_menu_slideshow = 17301587;
  r_drawable_ic_menu_sort_alphabetically = 17301660;
  r_drawable_ic_menu_sort_by_size = 17301661;
  r_drawable_ic_menu_today = 17301588;
  r_drawable_ic_menu_upload = 17301589;
  r_drawable_ic_menu_upload_you_tube = 17301590;
  r_drawable_ic_menu_view = 17301591;
  r_drawable_ic_menu_week = 17301592;
  r_drawable_ic_menu_zoom = 17301593;
  r_drawable_ic_notification_clear_all = 17301594;
  r_drawable_ic_notification_overlay = 17301595;
  r_drawable_ic_partial_secure = 17301596;
  r_drawable_ic_popup_disk_full = 17301597;
  r_drawable_ic_popup_reminder = 17301598;
  r_drawable_ic_popup_sync = 17301599;
  r_drawable_ic_search_category_default = 17301600;
  r_drawable_ic_secure = 17301601;
  r_drawable_list_selector_background = 17301602;
  r_drawable_menu_frame = 17301603;
  r_drawable_menu_full_frame = 17301604;
  r_drawable_menuitem_background = 17301605;
  r_drawable_picture_frame = 17301606;
  r_drawable_presence_audio_away = 17301679;
  r_drawable_presence_audio_busy = 17301680;
  r_drawable_presence_audio_online = 17301681;
  r_drawable_presence_away = 17301607;
  r_drawable_presence_busy = 17301608;
  r_drawable_presence_invisible = 17301609;
  r_drawable_presence_offline = 17301610;
  r_drawable_presence_online = 17301611;
  r_drawable_presence_video_away = 17301676;
  r_drawable_presence_video_busy = 17301677;
  r_drawable_presence_video_online = 17301678;
  r_drawable_progress_horizontal = 17301612;
  r_drawable_progress_indeterminate_horizontal = 17301613;
  r_drawable_radiobutton_off_background = 17301614;
  r_drawable_radiobutton_on_background = 17301615;
  r_drawable_screen_background_dark = 17301656;
  r_drawable_screen_background_dark_transparent = 17301673;
  r_drawable_screen_background_light = 17301657;
  r_drawable_screen_background_light_transparent = 17301674;
  r_drawable_spinner_background = 17301616;
  r_drawable_spinner_dropdown_background = 17301617;
  r_drawable_star_big_off = 17301619;
  r_drawable_star_big_on = 17301618;
  r_drawable_star_off = 17301621;
  r_drawable_star_on = 17301620;
  r_drawable_stat_notify_call_mute = 17301622;
  r_drawable_stat_notify_chat = 17301623;
  r_drawable_stat_notify_error = 17301624;
  r_drawable_stat_notify_missed_call = 17301631;
  r_drawable_stat_notify_more = 17301625;
  r_drawable_stat_notify_sdcard = 17301626;
  r_drawable_stat_notify_sdcard_prepare = 17301675;
  r_drawable_stat_notify_sdcard_usb = 17301627;
  r_drawable_stat_notify_sync = 17301628;
  r_drawable_stat_notify_sync_noanim = 17301629;
  r_drawable_stat_notify_voicemail = 17301630;
  r_drawable_stat_sys_data_bluetooth = 17301632;
  r_drawable_stat_sys_download = 17301633;
  r_drawable_stat_sys_download_done = 17301634;
  r_drawable_stat_sys_headset = 17301635;
  r_drawable_stat_sys_phone_call = 17301636;
  r_drawable_stat_sys_phone_call_forward = 17301637;
  r_drawable_stat_sys_phone_call_on_hold = 17301638;
  r_drawable_stat_sys_speakerphone = 17301639;
  r_drawable_stat_sys_upload = 17301640;
  r_drawable_stat_sys_upload_done = 17301641;
  r_drawable_stat_sys_vp_phone_call = 17301671;
  r_drawable_stat_sys_vp_phone_call_on_hold = 17301672;
  r_drawable_stat_sys_warning = 17301642;
  r_drawable_status_bar_item_app_background = 17301643;
  r_drawable_status_bar_item_background = 17301644;
  r_drawable_sym_action_call = 17301645;
  r_drawable_sym_action_chat = 17301646;
  r_drawable_sym_action_email = 17301647;
  r_drawable_sym_call_incoming = 17301648;
  r_drawable_sym_call_missed = 17301649;
  r_drawable_sym_call_outgoing = 17301650;
  r_drawable_sym_contact_card = 17301652;
  r_drawable_sym_def_app_icon = 17301651;
  r_drawable_title_bar = 17301653;
  r_drawable_title_bar_tall = 17301670;
  r_drawable_toast_frame = 17301654;
  r_drawable_zoom_plate = 17301655;

使用以下代码(例如,对于 android 来说相当于R.drawable.ic _menu_send):

  ntfBuilder.setSmallIcon(r_drawable_ic_menu_send);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用DELPHI更改Android设备通知中的小图标图像 的相关文章

  • 如何正确显示AChartEngine条形图

    我在用图表引擎 1 0 1 最新 并想演示一个条形图 这就是我要的 我想要的图表 到目前为止我所取得的成就 1 1 view 缩小视图 问题 图表的左右部分在 1 1 视图中丢失 酒吧之间的距离是如此之远 我需要减少它 该栏未正确位于文本标
  • 进度条中形状的填充

    我正在使用 xml 文件来定义进度条 我在背景形状上定义了填充 但这个设置有时会正确显示 有时则不能 因此 如果我启动内部带有进度条的应用程序或活动 则会正确显示带有背景和 填充 进度的进度条 然后我关闭我的应用程序并再次启动它 并且 进度
  • Phonegap(3.0.0) 相机第一次尝试不成功

    出于测试目的 我复制了在音隙相机 API http docs phonegap com en 3 0 0 cordova camera camera md html Camera我发出警报onPhotoDataSuccess测试函数何时被触
  • android 4 中的 android RadioButton 问题

    我有一个简单的应用程序 屏幕是在相对布局内构建的 我还有 LinearLayout s 其中之一显示 2 个 RadioButton s 如下所示
  • 如何处理 Jetpack Compose 中的导航?

    在 Jetpack Compose 中 导航应该如何完成 所有 并不多 示例 包括来自 Google 的官方示例 都使用密封类并加载新屏幕以响应观察当前屏幕的变化 这确实 有点 有效 但不提供导航返回堆栈 并且手机的后退按钮完全不知道 只是
  • Unity 2018.3 android dex合并问题

    在您决定将这篇文章视为 重复 而不阅读它之前 请了解我已经查看了大量与此主题相关的帖子 但我找不到适合我的实例的解决方案 包括 StackOverflow 建议的所有解决方案 大多数帖子都是针对 Android Studio 而不是 Uni
  • ZipResourceFile 无法解析为类型

    我正在尝试重写我的应用程序以使用 APK 扩展文件 我一直在关注这里的文档http developer android com google play expansion files html http developer android
  • 呼叫转移

    我想将所有拨打我号码的呼叫转接至新的预定义号码 自动地 可以转接来电吗 也许至少对于 Froyo 来说是可能的 我找到了名为 Easy Call Forwarding 的应用程序 http www appstorehq com easyca
  • VideoView中的seekTo

    我在寻找视频时遇到问题 我的应用程序应该从上次停止的位置恢复视频 所以我这样做 videoView seekTo bookmark videoView start 然而 当它播放时 我听到视频开头的声音大约 1 2 秒 只有在该视频寻找到正
  • Android.system.ErrnoException:isConnected失败:ECONNREFUSED(连接被拒绝)

    我使用Java连接MySQL和Json将数据发送到android 当我通过URL地址将数据从Java发送到json时 http 192 168 1 221 9999 rentalcar service category getAllManu
  • 在没有 SurfaceView 的 Android 上获取 GPU 信息

    在Android上 有没有一种方法可以在不创建SurfaceView的情况下获取GPU信息 我不想使用 OpenGL 绘制任何内容 但我只需要获取硬件信息 例如供应商 OpenGL ES 版本 可用扩展等 抱歉 我不知道如何在 Androi
  • 如何以编程方式检测 Android 设备是否与 USB OTG 连接

    我正在使用定制 OTG 指纹扫描仪 我想检查 OTG 是否已连接到我的 Android 设备或未在特定的 Android 活动中 public class BootUpReceiver extends BroadcastReceiver p
  • 在不同的活动上显示 OnItemClickListener 的结果

    我使用 OnItemClickListener 从列表视图中选择一个项目 如下所示 listView setTextFilterEnabled true final TextView disp TextView findViewById R
  • 返回 RxJava 的 Completable 的方法的命名约定

    我有一个带有视图类的 Android 应用程序 Fragment Activity 观察其ViewModel The ViewModel公开方法 例如getUserName返回Observable
  • 膨胀类 android.support.v7.internal.widget.NativeActionModeAwareLayout 时出错

    如果您以前解决过这个问题 请有人帮助我 我正在尝试使用材料设计制作一些东西 以便应用程序可以运行到 API 10 的低版本 我的代码中没有任何错误 但我不断收到此错误 Android 日志猫 06 01 05 05 37 414 E And
  • 回购:找不到命令?

    我是 git 和 repo 的新手 我使用的是window 7 所以我使用cygwin 我已经从 cygwin 安装程序安装了 git 之后我尝试在 cygwin 中使用以下命令进行存储 repo init u git android gi
  • 如何在不打开浏览器的情况下查看 Android 应用程序中的网页?

    嘿 我正在开发一个 Android 应用程序 我想连接到该应用程序内的网络 不过 我在某种程度上尝试过 WebView 但它在我的目录中显示的文件很好 但当连接到 google com 时 它显示错误 然后我添加了这个文件
  • java.io.IOException:Android Firebase 中的 FIS_AUTH_ERROR 但调试模式正常

    我在检索 firebase 令牌时遇到以下问题 FirebaseMessaging getInstance getToken 在调试模式下 我获取令牌并将其发送到服务器 在运行模式下 应用程序工作正常 它已发布 但我无法获取令牌 因为我已经
  • 使用本机短信编辑器发送短信后如何返回意图

    我正在使用下面的代码使用本机短信编辑器发送短信 Intent intent new Intent Intent ACTION VIEW intent putExtra address 1234567890 intent putExtra s
  • E/libEGL: validate_display:99 错误 3008 (EGL_BAD_DISPLAY) API 24 或更高版本

    当我使用 API 为 24 或更高版本的设备时 我收到此错误 E libEGL validate display 99 错误 3008 EGL BAD DISPLAY XML 代码 activity main xml

随机推荐

  • 简单显示SQlite数据库中的数据

    我试图找到一个在布局中显示 SQLite 数据库中的数据的简单示例 我尝试查看 笔记本 示例 但它只有一个输出列 是否有一个示例 其中包含多个输出列 并且如果可能的话 某些列中包含整数数据 闪电战 您可能需要考虑创建自己的客户Adapter
  • PySpark:将 DataFrame 列的值与另一个 DataFrame 列进行匹配

    在 Pandas DataFrame 中 我可以使用DataFrame isin 函数将列值与另一列进行匹配 例如 假设我们有一个 DataFrame df A pd DataFrame col1 A B C B C D col2 1 2
  • 为什么在这种情况下接口合并不起作用?

    我正在 Visual Studio Code 中编写一些 WebGL 代码 类型声明来自 npm 包 types webgl2 而 typescript 似乎没有合并以下接口 interface WebGL2RenderingContext
  • Angular 2 模板引用变量与 *ngFor [重复]

    这个问题在这里已经有答案了 我有两个组成部分 列表和详细信息 In 列表组件我想渲染多个细节组件 列表组件 ts Component selector detail templateUrl detail component html exp
  • 如何在 XAMPP 上使用 Codeigniter 删除 index.php?

    我无法在 XAMPP 1 7 3 上隐藏 Codeigniter index php URL http localhost Servidor agentesRainbow index php agentes tony tony是一个论点 将
  • 编辑输入 type="search" 伪元素按钮 ('x')

    我正在尝试制作一个看起来不错的搜索栏 我所做的是 我制作了一个搜索栏的图像 并将该图像添加到输入的背景中 然后编辑字体将出现的位置和大小 我唯一找不到编辑的方法是使用输入类型搜索时出现的小 x 按钮 我想将其向左移动一点 这样它就能修复我的
  • 如何在Android中实现拖动幻灯片视图

    我需要能够将列表视图拖动到左侧并移出视图 同时暴露第一个列表视图下方的另一个列表视图 我该怎么做呢 您可以使用 OnTouchListener 并在 ACTION MOVE 上调整大小或移动某些视图 请记住调用 setClickable t
  • Android USB 主机 API 和 USB 存储

    我正在尝试使用 android 主机 api 进行 USB 存储 我对此有很多疑问 使用主机 API 一切皆有可能 我想查看 USB 的内容 如果可能的话 查看正常的文件操作 我没有找到任何与此相关的文档帮助 我可以使用 UsbDevice
  • Wix 的 util:CloseApplication 扩展似乎不起作用

    我试图在使用 Wix 卸载之前关闭一个进程 我已经确认 只要存在可见窗口 它就可以工作 但如果没有可见窗口 此应用程序大多数情况下都是这种情况 因为它是系统托盘应用程序 卸载程序就会挂起 并且最终继续卸载 使进程保持运行 根据这个论坛帖子
  • 下载 HTML 页面及其内容

    Does Python有什么方法可以下载整个HTML页面及其内容 图像 CSS 到给定 url 的本地文件夹 并更新本地 html 文件以在本地选择内容 您可以使用urllib http docs python org library ur
  • 在 Visual Studio Code 中将语言更改为 JSX

    立即使用 Visual Studio 代码在0 8版本上支持JSX https code visualstudio com Updates languages jsx colorization 但看起来激活它的唯一方法是使用 jsx文件扩展
  • 为什么不推荐react-router v6中的HashRouter?

    在每一个react routerv6 文档页面提到HashRouter有一个简短的警告文本指出不建议使用这种路由 没有解释为什么 有没有major缺点 它会以某种方式破坏任何 api 吗 简短的回答 一些开发人员认为哈希路由会产生 丑陋 的
  • 向skimage中的regionprops添加额外的属性

    我正在使用regionprops函数从scikit image or skimage 包使用同一包中的 SLIC 超像素算法来计算分割图像的区域特征 除了函数中计算的特征之外 我还需要其他特征 主要是 标准差 偏度 峰度 我修改了源代码 r
  • 在头文件中初始化可定制结构的向量

    有没有办法获得全局结构列表并在同一头文件中初始化包含它们的修改版本的向量 我知道我无法直接访问和编辑 h 文件中的变量 因为它不是运行时代码 但也许恰好有一个解决方法 或者可能是我碰巧跳过的一些非常基本的方法C 初学者手册 如果是的话请原谅
  • Android 在 webview 中启用后退按钮

    我正在使用以下代码在我的 Android 应用程序中显示 Web 视图 package com company myapp import com google android apps analytics GoogleAnalyticsTr
  • 许可方案、防欺骗和撤销功能

    这是我的第一个问题 所以请温柔一点 我正在开发一个软件 我想使用某种许可方案来保护该软件 一个基本方案是为用户生成一些 唯一 密钥 用户在想要注册该软件时发送该密钥和注册码并收到激活码 当应用程序运行时 它通过比较 唯一 密钥和通过解密激活
  • 从独立存储中的图像设置辅助平铺背景图像

    这是我从图像网址获取流的方法 using var httpClient new HttpClient response await httpClient GetStreamAsync new Uri IMAGEURL HERE UriKin
  • 在 T-SQL 中将特定 BigInt 转换为 DateTime

    我有 bigInt 635307578922100000我需要转换成DateTime 我尝试了几种方法来做到这一点 SELECT DATEADD S CONVERT bigint 635307578922100000 1000 CONVER
  • SPSite 站点 = new SPSite(SPContext.Current.Web.Url) 与 SPContext.Current.Web.Site

    为什么某些 SharePoint 示例使用 using SPSite site new SPSite SPContext Current Web Url 而不仅仅是简单地 SPSite site SPContext Current Web
  • 如何使用DELPHI更改Android设备通知中的小图标图像

    有没有办法用Delphi更改Android应用程序通知中的小图标图像 默认使用的应用程序图标 轻松创建通知的标准方法是 var aNotification TNotification begin aNotification aNotific