首页 > 其他分享 >Android 通知权限

Android 通知权限

时间:2024-12-08 15:42:43浏览次数:2  
标签:end 通知 tmpDelay edt tmpNotification Android 权限

>> 在 AndroID 13 中引入了通知权限: android.permission.POST_NOTIFICATIONS

     在 AndroID 13 之前,可以直接通过 NotificationCenter 控件来发送消息; 

     在 AndroID 13 之后,需要动态申请此权限,才可以发送通知;

>> 动态权限申请 

procedure TForm1.Button1Click(Sender: TObject);
var
  tmpPermissions: TArray<string>;
begin
  // 从AndroID 13 开始,通知权限需要申请
  if TJBuild_Version.JavaClass.SDK_INT > 32 then
  begin
    tmpPermissions :=
      [JStringToString(TJManifest_permission.JavaClass.POST_NOTIFICATIONS)];
    // 申请权限
    Permissionsservice.RequestPermissions(tmpPermissions,
      RequestPermissionsResult, DisplayRationale);
  end
  else  //低于此版本的,直接发送通知
    SendNotification;
end;

  ***  若只是动态 申请,经测试,在AndroID14手机上,还是无法弹出授权弹窗;

  ***  经查,需要在 AndroidManifest.xml 文档中,要申请通知权限,之后在代码中动态申请权限,才会弹窗;

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />

 

>> 通知发送

procedure TForm1.SendNotification;
var
  tmpNotification: TNotification;
  tmpDelay: Integer;
begin
  // tmpNotification := TNotification.Create;
  tmpNotification := NotificationCenter1.CreateNotification;
  try
    tmpNotification.Name := edt_Name.Text; // 唯一
    tmpNotification.Title := edt_Title.Text; // 标题
    tmpNotification.AlertBody := edt_Body.Text; // 名称

    tmpNotification.Number := 66; //数量

    tmpNotification.AlertAction := '查看来源';
    tmpNotification.HasAction := True;

    tmpDelay := StrToIntDef(edt_Delay.Text, 0);
    if tmpDelay > 0 then
    begin
      tmpNotification.FireDate := IncSecond(Now, tmpDelay);
      NotificationCenter1.ScheduleNotification(tmpNotification)
    end
    else
      NotificationCenter1.PresentNotification(tmpNotification);
  finally
    tmpNotification.Free;
  end;
end;

 

标签:end,通知,tmpDelay,edt,tmpNotification,Android,权限
From: https://www.cnblogs.com/jieling/p/18593458

相关文章

  • 小鹅通知识付费系统如何助力内容变现?
    在探讨教育与软件行业的深度融合时,我们不可忽视知识付费和在线教育对传统教育生态的影响。尤其是在当前的技术环境下,知识付费在线教育系统作为重要的工具,正日益受到教育机构和教育者的青睐。今天我们将聚焦于一家在这方面颇有建树的企业——小鹅通。尽管本文不着重推广特定平台或......
  • Android 10.0 WiFi连接流程分析一
    1.前言在10.0的系统rom定制化开发中,对于wifi的定制功能也是比较多的,在关于wifi连接流程模块的分析,了解整个wifi连接流程也是非常重要的,接下来看下wifi的连接流程分析下相关功能实现2.WiFi连接流程分析一的核心类packages/apps/Settings/src/com/android/settings/wifi/Wifi......
  • Android移动开发基础——广播
    在Android开发的世界里,广播(Broadcast)是极为重要的系统级通信机制,它就像一个无形的传声筒,让不同组件之间能够灵活地收发消息,不管是系统状态的变更通知,还是应用内部的自定义事件传达,广播都能派上用场。今天,就跟着我一步步拆解一个Android广播基础项目,深入理解广播的创建、注......
  • Android移动开发基础——Handler机制
    ⼀、Handler原理在Android中,Handler是⼀个重要的⼯具,主要⽤于在不同线程之间传递消息或执⾏任务,特别是从后台线程向主线程(UI线程)发送任务。Handler的⼯作原理依赖于Looper和MessageQueue,它们共同组成了Android的消息处理机制。⼆、Handler原理概述1、线程和消息......
  • Android14 关于读写权限 (Vivo)
    按常理来讲,在相机业务,或从相册读取图片时,应该要申请读写权限,在使用Delphi12+Android14环境下,发现在申请读写权限时,申请权限内容中,这二项不需要授权?不清楚是自己处理的问题,还是规则有所变更>>申请权限>>相机申请三项权限,无论怎么操作,都只有相机权限一项返回(关于读写......
  • Android Codec2 CCodec (二八)SimpleC2Component
    在AndroidCodec2(九)组件实现分析一文中,我们了解了Codec2组件的实现框架,接下来这一章我们将深入探讨组件的实现细节。1、C2ComponentC2Component抽象了Codec2组件的控制与CallbackAPI。首先来看Callback类Listener:classListener{public:virtualvoidonWork......
  • Android Codec2 CCodec (二九)C2SoftHevcDec - Ⅰ
    在上一篇文章中,我们了解了SimpleC2Component提供的接口的含义。这一节,我们将以C2SoftHevcDec为例,探讨Codec2组件的参数应该如何定义。1、BaseParamsC2SoftHevcDec::IntfImpl定义了组件支持的默认参数,它继承自SimpleInterface<void>::BaseParams,所以我们先了解BaseParams......
  • Android 屏幕采集并编码为H.264
    前言我们前面基于摄像机的图像采集以及编解码已经完成了,那么接下来计划后面的三篇博文分别实现Android屏幕采集实现并进行H.264编解码、MIC音频采集并编码为AAC以及AAC解码播放,希冀可以通过这六篇博文能够对Android上面的音视频编解码有一个初步的学习和了解,由于博主也是近......
  • Android——Click事件实现方式
    Android观察者模式(ObserverDesignPattern):在对象之间定义⼀个⼀对多的依赖,当⼀个对象状态改变的时候,所有依赖的对象都会得到通知并⾃动更新。说⼈话:也叫发布订阅模式,能够很好的解耦一个对象改变,⾃动改变另⼀个对象这种情况。①、Subject被观察者定义被观察者必......
  • Android 移动应用开发---乡村民宿(2)Banner 轮播图,并实现跳转对应界面
    一,添加插件1,去东软职业技能在线下载插件2,找到需要的插件,并导入到libs里,只需要在build.gradle里面刷新一下就行了刷新就是把第三个步骤先注释点击syncNow,再取消注释再点一下syncNow这样就刷新成功了,我们就可以正常使用Banner插件了一般常用的插件有这些如果没有步骤三的......