Android-service

1. 预知识(安卓版本)

    public static final int BASE = 1;                    //Android 1.0public static final int BASE_1_1 = 2;                //Android 1.1public static final int CUPCAKE = 3;                 //Android 1.5public static final int DONUT = 4;                   //Android 1.6public static final int ECLAIR = 5;                  //Android 2.0public static final int ECLAIR_0_1 = 6;              //Android 2.0.1public static final int ECLAIR_MR1 = 7;              //Android 2.1public static final int FROYO = 8;                   //Android 2.2public static final int GINGERBREAD = 9;             //Android 2.3public static final int HONEYCOMB = 11;              //Android 3.0public static final int HONEYCOMB_MR1 = 12;          //Android 3.1public static final int HONEYCOMB_MR2 = 13;          //Android 3.2public static final int ICE_CREAM_SANDWICH = 14;     //Android 4.0public static final int ICE_CREAM_SANDWICH_MR1 = 15; //Android 4.0.3public static final int JELLY_BEAN = 16;             //Android 4.1public static final int JELLY_BEAN_MR1 = 17;         //Android 4.2public static final int JELLY_BEAN_MR2 = 18;         //Android 4.3public static final int KITKAT = 19;                 //Android 4.4public static final int KITKAT_WATCH = 20;           //Android 4.4Wpublic static final int L = 21;                      //Android 5.0public static final int LOLLIPOP = 21;               //Android 5.0public static final int LOLLIPOP_MR1 = 22;           //Android 5.1public static final int M = 23;                      //Android 6.0public static final int N = 24;                      //Android 7.0public static final int N_MR1 = 25;                  //Android 7.1public static final int O = 26;                      //Android 8.0public static final int O_MR1 = 27;                  //Android 8.1public static final int P = 28;                      //Android 9public static final int Q = 29;                      //Android 10public static final int R = 30;                      //Android 11public static final int S = 31;                      //Android 12

2. NotificationChannel

2.1 在 Android O 版本以上(也即是 Android 10以上的版本)需要设置 NotificationChannel,主要用来设置通知的程度;

  • NotificationManager.IMPORTANCE_NONE:关闭通知
  • NotificationManager.IMPORTANCE_MIN:开启通知,无提示音、无弹框、状态栏无显示
  • NotificationManager.IMPORTANCE_LOW:开启通知,无提示音、无弹框、状态栏显示
  • NotificationManager.IMPORTANCE_DEFAULT:开启通知,有提示音、无弹框、状态栏显示
  • NotificationManager.IMPORTANCE_HIGH:开启通知,有提示音有弹框状态栏显示

2.2 同时,支持在锁屏上设置信息的敏感度

  • VISIBILITY_PUBLIC:所有信息展示
  • VISIBILITY_PRIVATE:隐藏敏感信息(就像微信,锁屏不能看到具体信息一样)
  • VISIBILITY_SECRET:不展示

2.3 具体逻辑代码

// android O 版本以上
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {// 设置通知程度notificationChannel = new NotificationChannel("通道ID","通道名称",// 重要程度:见2.1节NotificationManager.IMPORTANCE_HIGH);// 锁屏信息的敏感度:见2.2节notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);// 获取通知服务管理器,并创建通道notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);notificationManager.createNotificationChannel(notificationChannel);}

3. 设置通知

// 跳转的页面
intent = new Intent(getApplicationContext(), MyServiceActivity.class); // 对Intent进行包装,因为不是马上跳转,而是悬挂通知栏,点击后跳转PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_MUTABLE);  
// 跟第二章节一样,O版本以上要设置通道等级if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {notification = new Notification.Builder(this, NOTIFICATION_CHANNEL_ID)// 图标.setSmallIcon(R.mipmap.ic_launcher)// 通知标题.setContentTitle("标题:测试文案")// 通知内容.setContentText("内容:你好,点击打开app主页")// 跳转页面.setContentIntent(pendingIntent)// 点击删除.setDeleteIntent(pendingIntent).build();}// 前台展示startForeground("前台通知ID", notification);return Service.START_STICKY;

4. 在AndroidManifest.xml开启通知权限和注册服务

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"package="com.example.myapplication">// 开启权限<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /><applicationandroid:name="org.litepal.LitePalApplication"android:usesCleartextTraffic="true"android:allowBackup="true"android:dataExtractionRules="@xml/data_extraction_rules"android:fullBackupContent="@xml/backup_rules"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.MyApplication"tools:targetApi="31">// 注册服务<service android:name=".services.FrontService"android:exported="true"android:enabled="true" /></application>
</manifest>

5. 设置主活动

public class MyServiceActivity extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.myservice_demo);// 开启服务findViewById(R.id.start_service).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MyServiceActivity.this, MyService.class);startService(intent);}});// 关闭服务findViewById(R.id.stop_service).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MyServiceActivity.this, MyService.class);stopService(intent);}});// 默认开启服务Intent service = new Intent(getApplicationContext(), FrontService.class);startService(service);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/665416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 正则表达式总结

Java 正则表达式总结 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编。今天&#xff0c;我们将深入探讨Java正则表达式&#xff0c;这是一种强大的文本匹配和处理工具&#xff0c;用于处理字符串的模式匹配。 1. 正则表达式简介 正则表达式是…

ABC339 A-G

Japan Registry Services (JPRS) Programming Contest 2024 (AtCoder Beginner Contest 339) - AtCoder 离AK ABC最近的一集&#xff0c;写完F还剩十分钟聊天去了&#xff0c;赛后一看题一眼主席树贴板子改一改十分钟过了...前几题感觉真的阅读理解... A - TLD 题意&#xf…

流畅的Python(七)-函数装饰器和闭包

一、核心要义 主要解释函数装饰器的工作原理&#xff0c;包括最简单的注册装饰器和较复杂的参数化装饰器。同时&#xff0c;因为装饰器的实现依赖于闭包&#xff0c;因此会首先介绍闭包存在的原因和工作原理。 二、代码示例 1、变量作用域规则 #!/usr/bin/env python # -*-…

前端学习笔记 | HTML5+CSS3静态网页制作的技巧(持续更新)

注&#xff1a;本文的css样式均使用less写法 1、字体居中 &#xff08;1&#xff09;先text-align:center;行内元素水平居中 &#xff08;2&#xff09;再line-heigh:(盒子高度);行内元素垂直居中 text-align: center;line-height: ( 30 / vw ); 2、盒子居中 情景1&#…

【课程作业_01】国科大2023模式识别与机器学习实践作业

国科大2023模式识别与机器学习实践作业 作业内容 从四类方法中选三类方法&#xff0c;从选定的每类方法中 &#xff0c;各选一种具体的方法&#xff0c;从给定的数据集中选一 个数据集&#xff08;MNIST&#xff0c;CIFAR-10&#xff0c;电信用户流失数据集 &#xff09;对这…

【大数据技术攻关专题】「Apache-Flink零基础入门」手把手+零基础带你玩转大数据流式处理引擎Flink(基础加强+运行原理)

手把手零基础带你玩转大数据流式处理引擎Flink&#xff08;运行机制原理加深&#xff09; 前提介绍运行Flink应用运行机制Flink的两大核心组件JobManagerTaskManagerTaskSlot Flink分层架构Stateful Stream ProcessingDataStream和DataSetDataStream&#xff08;数据流&#xf…

GPIO中断

1.EXTI简介 EXTI是External Interrupt的缩写&#xff0c;指外部中断。在嵌入式系统中&#xff0c;外部中断是一种用于处理外部事件的机制。当外部事件发生时&#xff08;比如按下按钮、传感器信号变化等&#xff09;&#xff0c;外部中断可以立即打断正在执行的程序&#xff0…

Qt 数据库操作V1.0

1、pro文件 QT sql2、h文件 #ifndef DATABASEOPERATION_H #define DATABASEOPERATION_H#include <QSqlDatabase> #include <QSqlQuery> #include <QSqlError> #include <QSqlRecord> #include <QDebug> #include <QVariant>clas…

大红喜庆版UI猜灯谜小程序源码/猜字谜微信小程序源码

今天给大家带来一款UI比较喜庆的猜灯谜小程序&#xff0c;大家看演示图的时候当然也是可以看得到那界面是多么的喜庆&#xff0c;而且新的一年也很快就来了,所以种种的界面可能都比较往喜庆方面去变吧。 这款小程序搭建是免服务器和域名的&#xff0c;只需要使用微信开发者工具…

Linux一键部署telegraf 实现Grafana Linux 图形展示

influxd2前言 influxd2 是 InfluxDB 2.x 版本的后台进程,是一个开源的时序数据库平台,用于存储、查询和可视化时间序列数据。它提供了一个强大的查询语言和 API,可以快速而轻松地处理大量的高性能时序数据。 telegraf 是一个开源的代理程序,它可以收集、处理和传输各种不…

Linux开发工具

前言&#xff1a;哈喽小伙伴们&#xff0c;经过前边的学习我们已经掌握了Linux的基本指令和权限&#xff0c;相信大家学完这些之后都会对Linux有一个更加深入的认识&#xff0c;但是Linux的学习可以说是从现在才刚刚开始。 这篇文章&#xff0c;我们将讲解若干个Linux的开发工…

Java基础数据结构之Map和Set

Map和Set接口 1.Set集合&#xff1a;独特性与无序性 Set是Java集合框架中的一种&#xff0c;它代表着一组无序且独特的元素。这意味着Set中的元素不会重复&#xff0c;且没有特定的顺序。Set接口有多个实现类&#xff0c;如HashSet、LinkedHashSet和TreeSet。 2.Map集合&…

Redis核心技术与实战【学习笔记】 - 19.Pika:基于SSD实现大容量“Redis”

前言 随着业务数据的增加&#xff08;比如电商业务中&#xff0c;随着用户规模和商品数量的增加&#xff09;&#xff0c;就需要 Redis 能保存更多的数据。你可能会想到使用 Redis 切片集群&#xff0c;把数据分散保存到不同的实例上。但是这样做的话&#xff0c;如果要保存的…

Redis为什么快?

前言 在当今的计算机应用领域&#xff0c;数据存储和高性能访问成为系统设计中至关重要的一环。Redis以其卓越的性能、简洁而强大的设计原则&#xff0c;成为众多开发者和企业首选的内存存储系统。本文将深入探讨Redis之所以能够如此快速的原因&#xff0c;从内存存储、单线程模…

利用牛顿方法求解非线性方程(MatLab)

一、算法原理 1. 牛顿方法的算法原理 牛顿方法&#xff08;Newton’s Method&#xff09;&#xff0c;也称为牛顿-拉弗森方法&#xff0c;是一种用于数值求解非线性方程的迭代方法。其基本思想是通过不断迭代来逼近方程的根&#xff0c;具体原理如下&#xff1a; 输入&#…

PCB笔记(二十三):allegro 标注长宽(一般用于测量板宽)时如何显示双单位

步骤&#xff1a;首先选择标注工具&#xff0c;然后右键→Parameters&#xff0c;在弹出来的窗口中√上如下图二所示选项 最终要达到显示单位的效果的话&#xff0c;需要在Text项键入%v%u。 今天就记录到这里啦O

Leetcode206:反转链表

一、题目 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表 示例&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]输入&#xff1a;head [] 输出&#xff1…

[ESP32 IDF]web server

目录 通过web server控制LED 核心原理解析 分区表 web server的使用 错误Header fields are too long的解决 通过web server控制LED 通过网页控制LED灯的亮灭&#xff0c;一般的ESP32开发板都可以实现&#xff0c;下面这篇文章是国外开发者提供的一个通过web server控制…

速盾:香港轻量服务器网站如何接入cdn

香港轻量服务器网站接入 CDN&#xff08;内容分发网络&#xff09;有以下几个步骤&#xff1a; 选择 CDN 供应商&#xff1a;首先需要选择一家可靠的 CDN 供应商&#xff0c;如速盾、阿里云、腾讯云、百度云等。根据自己的需求和预算&#xff0c;选择适合的 CDN 供应商。 注册…

13.2K Star,12306 抢票助手帮你回家

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 马上过年了&#xff0c;今年你在哪里过年&#xff1f;回老家吗&#x…