delphi安卓开发使用系统通知

在 Delphi 安卓开发中,系统通知是一个非常重要的功能,它可以让用户在使用应用程序时及时获得重要的提醒和信息。本文将会介绍 Delphi 安卓开发中使用系统通知的原理和详细操作流程。

一、系统通知的概念与分类

系统通知,就是在 Android 手机的状态栏上显示的提醒信息,包括通知标题、通知内容和通知图标等。通知一般包括两种类型:可清除和不可清除。可清除的通知是指通过用户的手动操作,可以清除掉该通知;而不可清除的通知则需要等到特定条件满足或被处理才能消除。

二、使用原理

通过 Delphi 调用 Android 系统 API,可以实现系统通知的功能。系统通知主要分为两部分:通知栏消息和后台服务。其中通知栏消息是负责在手机通知栏上显示提示信息,而后台服务则需要运行一个 Service 来维护通知的生命周期以及处理后续操作。

三、详细操作流程

以下是 Delphi 安卓开发中使用系统通知的详细操作流程:

1. 添加权限

首先需要在 AndroidManifest.xml 文件中添加以下权限:

```

//震动权限

//开机启动权限

//保持唤醒权限

//辅助功能权限

//通知权限

```

2. 创建 Service

创建一个 Service,用于定时检测并发送通知。代码如下:

```

unit MyService;

interface

uses

System.SysUtils, System.Classes, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes,Androidapi.JNI.Os,Androidapi.JNI.App,Androidapi.JNIBridge,Androidapi.JNI.NotificationManagerCompat,Androidapi.JNI.Notification,FMX.Platform.Android;

type

TMyService = class(TAndroidService)

procedure AndroidServiceCreate(Sender: TObject);

procedure AndroidServiceStartCommand(const Sender: TObject;

const Intent: JIntent; Flags, StartId: Integer; var StopService: Boolean);

private

{ Private 宣言 }

public

{ Public 宣言 }

end;

var

MyService: TMyService;

implementation

{%CLASSGROUP 'FMX.Controls.TControl'}

{$R *.dfm}

procedure TMyService.AndroidServiceCreate(Sender: TObject);

begin

// TODO: 繝味Λ繝��繝。繝シ繧ク繝」繝�繝ォ繧貞叙蠕励∈TAndroidService縺ョ譌・莠亥クコ螻樊€�

end;

procedure TMyService.AndroidServiceStartCommand(const Sender: TObject;

const Intent: JIntent; Flags, StartId: Integer; var StopService: Boolean);

var

NotificationManager: JNotificationManager;

Builder: JNotificationCompat_Builder;

Notification: JNotification;

Title, Content: JString;

begin

NotificationManager := TJNotificationManager.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE));

//创建Notification.Builder

Title := StringToJString('测试Notification');

Content := StringToJString('这个是一条测试Notification消息');

Builder := TJNotificationCompat_Builder.JavaClass.init(TAndroidHelper.Context);

Builder.setSmallIcon(TAndroidHelper.Context.getApplicationInfo().icon);

Builder.setContentTitle(Title);

Builder.setContentText(Content);

Builder.setTicker(Content);

//设置意图

Builder.setContentIntent(nil);

Builder.setAutoCancel(True);

//发声或震动

Builder.setDefaults(TJNotification.JavaClass.DEFAULT_ALL);

//启动通知

Notification := Builder.build();

NotificationManager.notify(0, Notification);

//自毁

StopService := True;

end;

end.

```

3. 创建 BroadcastReceiver

创建一个 BroadcastReceiver 来接收系统通知的操作,代码如下:

```

unit NotificationClickReceiver;

interface

uses

System.SysUtils,System.Types,System.UITypes,System.Classes,Androidapi.JNI.GraphicsContentViewText,

Androidapi.JNI.JavaTypes,Androidapi.JNI.Os,Androidapi.Helpers,Androidapi.JNIBridge,Androidapi.JNI.App,

Androidapi.JNI.NotificationManagerCompat,Androidapi.JNI.Notification,FMX.Platform.Android,

System.Notification;

type

TNotificationClickReceiver = class(TJavaLocal, JFMXBroadcastReceiverListener)

public

procedure onReceive(Context: JContext; Intent: JIntent); cdecl;

end;

var

NotificationClickReceiver: TNotificationClickReceiver;

implementation

procedure TNotificationClickReceiver.onReceive(Context: JContext; Intent: JIntent);

var

NotificationManager: JNotificationManager;

Notification: JNotification;

begin

if not Assigned(NotificationManager) then

NotificationManager := TJNotificationManager.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE));

if not Assigned(Notification) then

Notification := TJNotification.Wrap((Intent.getParcelableExtra(TJNotification.JClass.EXTRA_NOTIFICATION) as IParcelable).GetObjectID);

NotificationManager.cancel(Notification.contentIntent.requestCode);

end;

end.

```

4. 为 Service 注册 BroadcastReceiver

在 Service 的 AndroidServiceCreate 方法中注册 BroadcastReceiver:

```

procedure TMyService.AndroidServiceCreate(Sender: TObject);

var

LReceiver: JFMXBroadcastReceiver;

begin

inherited;

LReceiver := TJFMXBroadcastReceiver.JavaClass.init;

LReceiver.setListener(NotificationClickReceiver);

LReceiver.addAction(TJNotificationManager.JavaClass.ACTION_NOTIFICATION_CLICKED);

TJLocalBroadcastManager.JavaClass.getInstance(TAndroidHelper.Context).registerReceiver(LReceiver, TJLocalBroadcastFilter.JavaClass.init(TJNotificationManager.JavaClass.ACTION_NOTIFICATION_CLICKED));

end;

```

5. 在主界面中启动 Service

在主界面代码中启动 Service:

```

uses

MyService;

procedure TForm1.Button1Click(Sender: TObject);

begin

TAndroidHelper.Context.StartService(TAndroidHelper.JavaServiceClass(TMyService));

end;

```

6. 发送系统通知

在 Service 中发送系统通知,代码如下:

```

NotificationManager := TJNotificationManager.Wrap(TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE));

//创建Notification.Builder

Title := StringToJString('测试Notification');

Content := StringToJString('这个是一条测试Notification消息');

Builder := TJNotificationCompat_Builder.JavaClass.init(TAndroidHelper.Context);

Builder.setSmallIcon(TAndroidHelper.Context.getApplicationInfo().icon);

Builder.setContentTitle(Title);

Builder.setContentText(Content);

Builder.setTicker(Content);

//设置意图

Builder.setContentIntent(nil);

Builder.setAutoCancel(True);

//发声或震动

Builder.setDefaults(TJNotification.JavaClass.DEFAULT_ALL);

//启动通知

Notification := Builder.build();

NotificationManager.notify(0, Notification);

```

通过以上步骤,就可以在 Delphi 安卓应用中实现系统通知的功能了。这个功能可以给用户实时的消息推送和提示,可以让用户方便地了解当前应用程序的状态和提醒。


相关知识:
安卓 开发文档
安卓开发文档主要包括了安卓系统架构、安卓应用程序框架、安卓应用程序开发等方面的内容。以下将从这三方面,对安卓开发文档进行详细介绍。一、安卓系统架构安卓系统架构包含了安卓平台的各个层次,从下至上可以分为以下五层:Linux内核层、硬件抽象层、系统库和运行时、
2023-05-23
安卓 开发工具有哪些
安卓开发需要使用一些开发工具进行辅助,这里主要介绍常用的几款开发工具。1. Android StudioAndroid Studio是由Google官方推出的安卓开发IDE(集成开发环境),集成了调试、编译和打包等功能,可以节省开发者大量的时间和精力,是开
2023-05-23
xe7安卓开发
XE7是一个跨平台开发工具,可以用于开发iOS、Windows和Android应用程序。在本文中,我们将详细介绍XE7安卓开发的原理和流程。XE7安卓开发原理XE7安卓开发的原理是使用Delphi语言进行开发。Delphi是一种面向对象的语言,是 Pasc
2023-05-23
qt安卓app开发
Qt是一个跨平台的C++图形用户界面开发框架,支持多种平台,包括Windows、Linux、macOS、iOS、Android等操作系统。Qt不仅支持传统的桌面应用程序开发,也支持移动应用程序开发包括Android应用程序的开发。在这篇文章中,我们将会简单
2023-05-23
layuu开发安卓app
Layuu是一种安卓APP开发的工具,可以帮助开发者快速地构建APP应用程序。下面就为大家介绍一下Layuu开发安卓APP的原理和详细介绍。一、Layuu的原理Layuu是一款轻便的前端框架,基于HTML5和CSS3技术开发而成。使用Layuu开发安卓AP
2023-05-23
js开发安卓框架
JS开发安卓框架,其实就是指利用JavaScript开发安卓应用程序。这种方法虽然不是太常见,但是它确实很有用。这种开发框架能够帮助开发者更加快速地创建安卓应用程序,同时可以实现代码的重用,从而节约开发时间和成本。下面,我们来详细介绍JS开发安卓框架的原理
2023-05-23
ch340安卓应用开发
CH340是一款USB转串口芯片,常用于单片机与电脑的通信,而在安卓应用开发中也经常被使用。本文将主要介绍CH340在安卓应用中的原理和使用方法。一、CH340原理CH340芯片是一款USB转串口芯片,它能够实现USB转串口的功能,使得单片机可以通过USB
2023-05-23
as安卓开发教程
Android是目前世界上最为流行的移动操作系统之一,其具备开放性、灵活性和安全性得到了众多用户的认可并成为了移动互联领域的代表技术之一。在这样一个庞大的系统的背后,需要深厚的技术支持。因此,本文将探讨Android程序开发的原理和详细介绍。一、基础知识1
2023-05-23
app开发定制原生安卓程序
Android是目前全球运用最广泛的手机操作系统,而Android应用程序开发与Java编程密不可分。开发Android应用程序需要Java语言的基础,并掌握Android Studio集成开发环境和Android SDK开发工具包。Android应用程序
2023-05-23
快速开发一个安卓app
快速开发一个安卓app需要掌握以下几个步骤:1. 确定应用功能:首先需要明确你的应用需要实现什么功能,需要考虑用户需求和市场竞争情况,然后设计应用的架构和UI界面。2. 选择合适的开发平台:安卓应用可以用Java、Kotlin、C++等编程语言开发,可以使
2023-04-28
开发安卓app入门
开发安卓app入门 - 原理与详细介绍Android应用程序是使用Java编程语言编写的,其底层运行在一个可自定义度极高的系统平台之上,这个平台就是Android操作系统。本次入门教程旨在为初学者提供一个基于Android Studio开发环境的Andro
2023-04-28
乌市安卓app开发哪家正规
当我们谈论乌鲁木齐市的安卓app开发公司时,有很多选择可以考虑。然而,重要的是要找到一家专业且正规的公司来确保你的应用程序能够达到最高品质。在这篇文章中,我们将了解一些乌鲁木齐市安卓app开发公司的原理和详细介绍,以帮助你做出明智的决定。1. 诚信是关键选
2023-04-28
©2015-2023 安卓益APP Anzhuoe.com 蜀ICP备17007734号-1