首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Android前台服务通知不持久

Android前台服务通知不持久
EN

Stack Overflow用户
提问于 2017-06-05 09:04:43
回答 1查看 1.8K关注 0票数 6

我已经创建了一个类,它扩展了service并作为前台服务运行。我希望我的服务通知是持久的(即不通过滑动删除)。然而,我的通知可以通过滑动而被驳回。

服务文档声明:...A前台服务必须为状态栏提供通知,状态栏放在正在进行的标题下。这意味着,除非服务被停止或从前台删除,否则不能拒绝通知.

我确实设置了断点来检查是否命中了onDestroy()或stopSelf(),但事实并非如此。服务在前台模式下运行,但我可以通过滑动来取消通知。

对于相反的情况,我发现了不少问题,在服务停止后,是不可能撤销通知的,但并没有发现与我的问题类似的问题。

服务是通过意向启动的,并按以下方式初始化:

代码语言:javascript
运行
AI代码解释
复制
@Override
public void onCreate()
{
    super.onCreate();

    initialize();
}

private void initialize()
{
    Notification n = get_service_notification();
    startForeground(10, n);

    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter(BroadcastCodes.service_broadcast_intent_name));
}

@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
    startServing();
    return START_STICKY;
}

其中startServing()订阅位置更新

通知的构建方式如下

代码语言:javascript
运行
AI代码解释
复制
private Notification get_service_notification()
{
    Intent intent = new Intent(this, LoginActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder b = new NotificationCompat.Builder(this);

    b.setAutoCancel(false)
            .setWhen(System.currentTimeMillis())
            .setSmallIcon(R.drawable.app_icon)
            .setTicker("some text")
            .setContentTitle("some text")
            .setContentText("some text")
            .setContentIntent(contentIntent)
            .setContentInfo("")
            .setOngoing(true);

    Notification res = b.build();
    res.flags |= Notification.FLAG_ONGOING_EVENT | Notification.FLAG_NO_CLEAR;

    return res;
}

我试过使用标志和setOngoing/setAutoCancel,但是结果保持不变。

SDK版本配置为minSdkVersion 18,targetSdkVersion 25。

我真的很感激关于这个问题的任何意见--这可能只是一个愚蠢的错误,但我已经花了超过几个小时试图研究我的own...unfortunately,但没有结果。

编辑1

我还没有解决这个问题。我决定尝试一次肮脏的攻击,但还是没有运气。

我制作了一个PendingIntent,并通过setDeleteIntent()注册了它,这个想法是在这个通知被swipe驳回后显示一个新的通知。不幸的是,我没能让它起作用(这个意图在刷卡时永远不会触发)。

我也想澄清,通知可以被刷走,但不受通知窗格中的清除按钮(垃圾图标)的影响(即不被删除)。

编辑2

如前所述,我无法使用setDeleteIntent()重新创建我的通知时,它被取消了。

现在,我解决了一个问题--我的工作是做一些定期的工作。我现在给你打电话

代码语言:javascript
运行
AI代码解释
复制
notificationManager.notify(10, service_notification);

当我的任务运行时,即使被滑动,我的通知也会在一段时间后被重新创建。

我仍然有一种强烈的感觉,我只是误读了文档,因为我的测试设备(Honor API23)上有几个通知是无法删除的。

编辑3

我在不同的设备上尝试过相同的代码(联想API23),并且通知按预期工作(不能被拒绝,也不能被滑动)。我的问题似乎是设备特有的。

EN

回答 1

Stack Overflow用户

发布于 2017-06-17 00:41:24

我做了一些进一步的测试(除了更新中提到的那些)。我试着在互联网上运行各种示例/教程,比如这一页

在“荣誉”( Honor I)最初运行我的测试时,通知总是可以被滑动的,在联想和其他公司上,如文档中所述,“正在进行的”旗帜工程,即不能通过滑动操作而被驳回。

总之,我的问题似乎确实是设备特有的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44374028

复制
相关文章
高效管理 Android 前台服务
本文为 Android 电量管理系列连载的第四篇,希望可以为各位开发者提供设备续航方面的战略洞见和实践指南。
Android 开发者
2019/03/14
8540
高效管理 Android 前台服务
Android前台服务的使用(一)
最近由于工作调整,经常会在各地出差的路上,所以原创相对频率可能会慢些,当然空余时间还是会做为学习的输出,今天这篇主要就是介绍了Android的Service组件,Service做为四大组件之一,虽然没有Activity用的多,但是也会使用到,正好最近也是有个想法,先做的Demo技术验证。
Vaccae
2022/09/28
2K0
Android前台服务的使用(一)
Android通知监听服务之NotificationListenerService使用篇
本篇我们将介绍如何利用NotificationListenerService实现类似智能手表通知同步、微信自动抢红包等功能。实现这些功能的原理其实就是监听系统的通知服务,接下来我们来看该如何实现。
黄林晴
2022/11/14
4.6K0
Android通知监听服务之NotificationListenerService使用篇
Android程序后台开启服务,显示通知栏
一个Android程序仅仅只能前台 运行是远远不够的,我们更希望它在后台运行,既可以接收消息,又不耽误我们去使用别的软件,这就要求我们要实现两点:
fanfan
2022/05/07
1.6K0
Android程序后台开启服务,显示通知栏
【微服务】156:前台门户系统
它就是只有一个html文件,其它的都是以vue组件的形式拼接,从而实现了页面切换。
刘小爱
2020/09/23
1.4K0
【微服务】156:前台门户系统
Android 通知监听服务、NotificationListenerService使用方式(详细步骤+源码)
  今天是七夕,深圳又在下雨,庆幸的是单身狗不用出门,苦涩。NotificationListenerService 通知监听服务,就是监听手机上的广播通知,这个在纯App开发中用的比较少,但是在智能穿戴领域用的很多,比如我有一个智能手表,然后有一个配套的App应用,有时候在上班路上,手机放在口袋里,要接受到手机上的通知消息,例如QQ、微信、来电、短信等。智能手表上显示有新消息,如果手表上有屏幕的话,还能显示消息的内容。这就很Nice了不是吗?
晨曦_LLW
2021/09/10
5.4K0
android cookie持久化
在解析网页信息的时候,需要登录后才能访问,所以使用httpclient模拟登录,然后把cookie保存下来,以供下一次访问使用,这时就需要持久化cookie中的内容。 在之前先科普一下基础知识: 什么是Cookies? Cookies是一些小文件,它们被创建在客户端的系统里,或者被创建在客户端浏览器的内存中(如果是临时性的话)。用它可以实现状态管理的功能。我们可以存储一些少量信息到可以短的系统上,以便在需要的时候使用。最有趣的事情是,它是对用户透明的。在你的web应用程序中,你可以到处使用它,它极其得
xiangzhihong
2018/02/01
1.5K0
android cookie持久化
Android 8.0无法发送通知栏?通知栏适配通知渠道
  不得不说Andoird的通知栏相比于IOS在使用上有着明显的不足,不仅是体验上的差异,还有大量的非关注通知铺满了通知栏,导致通知栏混乱,杂多。   为什么一个很好的通知栏功能现在却变得这么遭用户讨厌?很大一部分原因都是因为开发者没有节制地使用导致的。每个开发者都只想着尽可能地去宣传自己的App,最后用户的手机就乱得跟鸡窝一样了。但是通知栏又还是有用处的,比如我们收到微信、短信等消息的时候,确实需要通知栏给我们提醒。因此分析下来,通知栏目前最大的问题就是,无法让用户对感兴趣和不感兴趣的消息进行区分。就比如说,我希望淘宝向我推送卖家发货和物流的相关消息,但是我不想收到那些打折促销或者是让我去买衣服的这类消息。那么就目前来说,是没有办法对这些消息做区分的,我要么同意接受所有消息,要么就屏蔽所有消息,这是当前通知栏的痛点。   那么在Android 8.0系统中,Google也是从这个痛点开始下手的。
饮水思源为名
2018/09/06
3.6K0
Android入门教程 | 四大组件之Service(前台服务,后台服务)
Service是一种可在后台执行长时间运行操作而不提供界面的应用组件。服务可由其他应用组件启动,而且即使用户切换到其他应用,服务仍将在后台继续运行。
Android_anzi
2021/10/20
5.7K0
android的消息通知栏
在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等。 下面就来说说经常会使用到通知机制中的通知栏框架(Notificaiton),它适用于交互事件的通知。它是位于顶层可以展开的通知列表。它会时不时的提醒你什么软件该更新了,什么人发你微信消息了等。 (网上看了下,全面介绍的文章不多,所以就萌生了写这篇的念头,随便当作回顾笔记。下面我就通过官方文档、源代码、书上的一些
xiangzhihong
2018/01/30
4.1K0
android的消息通知栏
【Android】如何知道某个Activity是否在前台?
转载自zrong's blog 有一个Android应用包含包含一个后台程序,该程序会定期连接服务器来实现自定义信息的推送。但是,当这个应用处于前台的时候,后台程序就没有必要连接服务器了。这样可以节省网络资源,也更省电。 用什么方法知道该应用是否处于前台呢? 网上搜到的方法大多数都是使用下面的代码: ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); //获得task列表 List<ActivityM
Gavin-ZYX
2018/05/18
1.6K0
Android中的通知和自定义通知布局
Android中的通知(Notification)是Android中的重要一部分,应用程序通过通知来提醒用户或者向用户传达信息,下面让我们来看一下怎么在我们的程序中使用通知和自定义通知的布局。
指点
2019/01/18
3.6K0
Android中的通知和自定义通知布局
Android Room 持久化库
这是一篇自己从Android开发文档中翻译来的关于Room 的文档。哪里不对,欢迎纠错 Room 持久化库 Room持久性库提供了SQLite的抽象层,以便在充分利用SQLite的同时允许流畅的数据库访问。 该库可帮助你在设备上创建应用程序的缓存数据,这样不管设备是否联网都能看到数据。 摘自 Room Persistence Library 使用 Room 在本地保存数据 原文地址 https://developer.android.com/training/data-storage/room/index.
佛系编码
2018/05/22
4K0
android orm持久层框架
android数据库开发   Android中内置了sqlite,但是常用的开发语言java是面向对象的,而数据库是关系型的,二者之间的转化每次都很麻烦(主要是我对sql语言不熟悉)。而Java Web开发中有很多orm框架,但是想直接放到Android上用有些麻烦。尝试了一下找Android的orm框架,说实话还有好几个。   实现考虑的是:androrm   官网:http://androrm.the-pixelpla.net/ 说实话,这个我实在没有弄懂,一共两个包。   一个是依赖包:Ap
xiangzhihong
2018/01/30
8440
Android:检查通知权限并跳转到通知设置界面
好久没有更新内容了啊。。。 封面是广东南澳岛的风景, 感觉很漂亮。我生于内陆长于内陆,对于大海有着无限的向往,羡慕海边的人可以赶海,可以捡贝壳,可以抓海鲜,还有海边那种温润怡人的气候!
CnPeng
2020/08/11
7.5K0
安卓应用无响应,你真的了解吗?
引言 不论从事安卓应用开发,还是安卓系统研发,应该都遇到应用无响应(简称ANR)问题,当应用程序一段时间无法及时响应,则会弹出ANR对话框,让用户选择继续等待,还是强制关闭。
刘盼
2019/05/14
2.3K0
Android前台服务的使用(二)--使用LiveEventBus实现进程间通讯(附源码)
上一篇《Android前台服务的使用(一)》介绍了Android前台服务的使用,其中通讯用的广播方式在来接消息,在文中最后也说过LiveEventBus实现了进程中的通讯,在《Android使用LiveEventBus消息实现组件间通讯》中有介绍过LiveEventBus的使用(不包括跨进程),本篇就来看看实现进程间的消息通讯。
Vaccae
2022/09/28
2K0
Android前台服务的使用(二)--使用LiveEventBus实现进程间通讯(附源码)
点击加载更多

相似问题

持久通知的前台服务

20

Android8.1真正持久的前台服务通知

13

不创建新的通知前台android服务

10

Android前台服务通知延迟

110

Android前台服务通知替换

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文