iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Android通知栏增加快捷开关功能如何实现
  • 242
分享到

Android通知栏增加快捷开关功能如何实现

2023-07-05 01:07:22 242人浏览 八月长安
摘要

本篇内容主要讲解“Android通知栏增加快捷开关功能如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android通知栏增加快捷开关功能如何实现”吧!TileService继承自Serv

本篇内容主要讲解“Android通知栏增加快捷开关功能如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android通知栏增加快捷开关功能如何实现”吧!

    TileService继承自Service,所以它也是Android的四大组件之一,不过它是一个特殊的组件,开发者不需要手动开启调用,系统可以自动识别并完成调用,系统会通过绑定服务(bindService)的方式调用。

    创建使用:

    快捷开关是Android 7(target 24)的新能力,因此在使用该能力前必须先判断版本大小(大于等于target 24)。

    1、自定义一个TileService类。

    class MyQSTileService: TileService() {  override fun onTileAdded() {          super.onTileAdded()    }    override fun onStartListening() {          super.onStartListening()    }    override fun onStopListening() {          super.onStopListening()    }    override fun onClick() {          super.onClick()    }    override fun onTileRemoved() {          super.onTileRemoved()    }}

    TileService是通过绑定服务(bindService)的方式被调用的,因此,绑定服务生命周期包含的四种典型的回调方法(onCreate()、onBind()、onUnbind()和 onDestroy())都会被调用。但是,TileService也包含了以下特殊的生命周期回调方法:

    • onTileAdded():当用户从编辑栏添加快捷开关到通知栏的快速设置中会调用。

    • onTileRemoved():当用户从通知栏的快速设置移除快捷开关时调用。

    • onClick():当用户点击快捷开关时调用。

    • onStartListening():当用户打开通知栏的快速设置时调用。当快捷开关并没有从编辑栏拖到设置栏中不会调用。在TileAdded添加之后会调用一次。

    • onStopListening():当用户打开通知栏的快速设置时调用。当快捷开关并没有从编辑栏拖到设置栏中不会调用。在TileRemoved移除之前会调用一次。

    2、在应用程序的清单文件中声明TileService。

    <service     android:name=".MyQSTileService"     android:label="@string/my_default_tile_label"       android:icon="@drawable/my_default_icon_label"     android:exported="true"     android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">     <intent-filter>         <action android:name="android.service.quicksettings.action.QS_TILE" />     </intent-filter> </service>
    • name:自定义的TileService的类名。

    • label:快捷开关在通知栏上显示的名称。

    • icon:快捷开关在通知栏上显示的图标。

    • exported:该服务能否被外部应用调用。该属性必须为true。如果为false,那么快捷开关的功能将失效,原因是exported="false"时,TileService将不支持外部应用调起,手机系统自然不能再和该快捷开关交互。必须配置。

    • permission:需要给service配置的权限,BIND_QUICK_SETTINGS_TILE即允许应用程序绑定到第三方快速设置。必须配置。

    • intent-filter:意图过滤器,只有匹配内部的action,才能调起该service。必须配置。

    监听模式

    TileService的监听模式(或理解为启动模式)有两种,一种是主动模式,另一种是标准模式。

    • 主动模式

    在主动模式下,TileService被请求时该服务会被绑定,并且TileService的onStartListening也会被调用。该模式需要在AndroidManifeast清单文件中声明:

    <service ...>    <meta-data android:name="android.service.quicksettings.ACTIVE_TILE"         android:value="true" />    ...</service>

    通过TileService.requestListeningState()这一静态方法,就可以实现对TileService的请求,示例如下:

          TileService.requestListeningState(            applicationContext, ComponentName(                BuildConfig.APPLICATION_ID,                MyQSTileService::class.java.name            )        )

    主动模式下值得注意的是:

    • 用户在通知栏快速设置的地方点击快捷开关时,TileService会自动完成绑定、TileService的onStartListening会被调用。

    • TileService无论是通过点击被绑定还是通过requestListeningState请求被绑定,TileService所在的进程都会被调起。

    标准模式

         在标准模式下,TileService可见时(即用户下拉通知栏看见快捷开关)该服务会被绑定,并且TileService的onStartListening也会被调用。标准模式不需要在AndroidManifeast清单文件中进行额外的声明,默认就是标准模式。

    标准模式下值得注意的是:

    • 和主动模式相同,TileService被绑定时,TileService所在的进程就会被调起。

    • 而和主动模式不同的是,标准模式绑定TileService是通过用户下拉通知栏实现的,这意味着TileService所在的进程会被多次调起。因此为了避免主进程被频繁调起、避免DAU等数据统计受到影响,我们还需要为TileService指定一个特定的子进程,在Androidmanifest清单文件中设置:

          <service            ......            android:process="自定义子进程的名称">            ......        </service>

    更新快捷开关

    如果需要对快捷开关的数据进行更新,可以通过getQsTile()获取快捷开关的对象,然后通过setIcon(更新icon)、setLable(更新名称)、setState(更新状态,包括STATE_ACTIVE&mdash;&mdash;表示开启或启用状态、STATE_INACTIVE&mdash;&mdash;表示关闭或暂停状态、STATE_UNAVaiLABLE:表示暂时不可用状态,在此状态下,用户无法与您的磁贴交互)等方法设置快捷开关新的数据,最后调用updateTile()方法实现。

      override fun onStartListening() {    super.onStartListening()    if (qsTile.state === Tile.STATE_ACTIVE) {        qsTile.label = "inactive"        qsTile.icon = Icon.createWithResource(context, R.drawable.inactive)        qsTile.state = Tile.STATE_INACTIVE    } else {        qsTile.label = "active"        qsTile.icon = Icon.createWithResource(context, R.drawable.active)        qsTile.state = Tile.STATE_ACTIVE    }    qsTile.updateTile()  }

    操作快捷开关

    • 如果想要实现点击快捷开关时、关闭通知栏并跳转到某个页面,可以调用以下方法:

    startActivityAndCollapse(Intent intent)
    • 如果想要在点击快捷开关时弹出对话框进行交互,可以调用以下方法:

    override fun onClick() {    super.onClick()    if(!isLocked()) {        showDialog()    } }

    因为快捷开关有可能在用户屏时出现,所以必须加上isLocked()的判断。只有非锁屏的情况下,对话框才会出现。

    • 如果快捷开关含有敏感信息,需要使用isSecure()进行设备安全性判断,当设备安全时,才能执行快捷开关相关的逻辑(如点击的逻辑)。当设备不安全时(手机处于锁屏状态时),可调用unlockAndRun(Runnable runnable),提示用户解锁屏幕并执行自定义的runnable操作。

    到此,相信大家对“Android通知栏增加快捷开关功能如何实现”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: Android通知栏增加快捷开关功能如何实现

    本文链接: https://www.lsjlt.com/news/348930.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Android通知栏增加快捷开关功能如何实现
      本篇内容主要讲解“Android通知栏增加快捷开关功能如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android通知栏增加快捷开关功能如何实现”吧!TileService继承自Serv...
      99+
      2023-07-05
    • Android通知栏增加快捷开关的功能实现教程
      目录创建使用:1、自定义一个TileService类。2、在应用程序的清单文件中声明TileService。总结  我们通常可以在通知栏上看到“飞行模式&rdq...
      99+
      2023-01-30
      android状态栏添加快捷开关 android通知栏开启 通知栏快捷功能
    • 如何在Android中实现通知栏
      今天就跟大家聊聊有关如何在Android中实现通知栏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、设置通知内容//CHANNEL_ID,渠道ID,Android 8.0...
      99+
      2023-06-15
    • win10怎么实现快捷键快速开启与关闭蓝牙功能
      本篇内容主要讲解“win10怎么实现快捷键快速开启与关闭蓝牙功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win10怎么实现快捷键快速开启与关闭蓝牙功能”吧!具体操作:打开设置以后,选择【设...
      99+
      2023-06-27
    • Bootstrap中treeview如何实现动态加载数据并添加快捷搜索功能
      这篇文章主要介绍了Bootstrap中treeview如何实现动态加载数据并添加快捷搜索功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。写...
      99+
      2024-04-02
    • 如何使用jQuery方便快捷的实现Ajax功能
      如何使用jQuery方便快捷的实现Ajax功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Ajax让用户页面丰富起来, 增强了用户体验. 使...
      99+
      2024-04-02
    • php购物增加减少功能如何实现
      本文小编为大家详细介绍“php购物增加减少功能如何实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“php购物增加减少功能如何实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。php实现购物增加减少的方法:1、...
      99+
      2023-07-04
    • HTML5如何实现桌面通知提示功能
      这篇文章主要介绍HTML5如何实现桌面通知提示功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体代码如下所示:<button id="button&qu...
      99+
      2024-04-02
    • HTML5如何实现Notification API桌面通知功能
      这篇文章主要为大家展示了“HTML5如何实现Notification API桌面通知功能 ”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5如何实现Not...
      99+
      2024-04-02
    • Android如何通过XListView实现上拉加载下拉刷新功能
      小编给大家分享一下Android如何通过XListView实现上拉加载下拉刷新功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下## 导入XListVIew第三方库文件。通过LinkedList将刷新...
      99+
      2023-05-30
    • 如何使用golang的Websocket开发实时通知功能
      如何使用Golang的Websocket开发实时通知功能概述:Websocket是一种在客户端和服务器之间实现双向通信的技术。它可以实现实时的数据传输和及时的通知功能。本文将介绍如何使用Golang的Websocket库来开发实时通知功能,...
      99+
      2023-12-18
      Golang websocket 实时通知
    • HTML5中如何实现Web Notification桌面通知功能
      这篇文章主要介绍了HTML5中如何实现Web Notification桌面通知功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。有的时候我们会在桌面右下角看到这样的提示:这种...
      99+
      2023-06-09
    • Android如何实现带字母索引的侧边栏功能
      这篇文章主要介绍了Android如何实现带字母索引的侧边栏功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。之前已经用自定义View做出如下这样一个效果了这两天需要重新拿来使...
      99+
      2023-05-30
      android
    • 微信小程序服务通知功能如何实现
      这篇文章主要介绍“微信小程序服务通知功能如何实现”,在日常操作中,相信很多人在微信小程序服务通知功能如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序服务通知功能如何实现”的疑惑有所帮助!接下来...
      99+
      2023-06-26
    • 如何使用HTML5实现Notification API桌面通知功能
      这篇文章将为大家详细讲解有关如何使用HTML5实现Notification API桌面通知功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   为什么需要HTML5的...
      99+
      2024-04-02
    • 如何实现Android导航栏功能项的显示与屏蔽
      这篇文章给大家分享的是有关如何实现Android导航栏功能项的显示与屏蔽的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Android 的导航栏有诸多功能,例入 截屏,音量加,音量减,最近任务,菜单.返...
      99+
      2023-06-22
    • Android开发中如何实现一个图片中叠加文字功能
      本篇文章为大家展示了Android开发中如何实现一个图片中叠加文字功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。效果图:功能:用户自由输入内容,可手动换行,并且行满也会自动换行。2.可拖动改变图...
      99+
      2023-05-31
      android roi
    • 如何在PHP CMS系统中实现消息通知功能
      在如今社交化、信息化的互联网时代,消息通知功能成为了许多网站或系统中必不可少的一部分。对于PHP CMS系统而言,实现消息通知功能不仅可以提升用户体验,而且也可以为网站的运营和维护提供...
      99+
      2024-04-02
    • Android中如何使用RadioGroup和Fragment实现底部导航栏的功能
      小编给大家分享一下Android中如何使用RadioGroup和Fragment实现底部导航栏的功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在一些购物商城中...
      99+
      2023-06-15
    • Android如何实现自定义View展开菜单功能
      这篇文章主要为大家展示了“Android如何实现自定义View展开菜单功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Android如何实现自定义View展开菜单功能”这篇文章吧。效果图思路下...
      99+
      2023-05-31
      android view
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作