Android实现类似qq,微信消息悬浮窗通知

Android实现类似qq,微信消息悬浮窗通知,第1张

实现方法:(需要开启悬浮窗通知权限、允许应用在其他应用上显示)

悬挂式Notification,他是50中新增的,也就是API中的Headsup的Notification,可以在不打断用户 *** 作的时候,给用户通知

注意:在某些rom下使用headsup并不会显示桌面悬浮窗,而是直接跳转到相应的界面,亲测华为,小米都是这种情况,这种情况下需要自己实现悬浮窗

具体实现:

需要权限

<uses-permission android:name="androidpermissionEXPAND_STATUS_BAR" />

收起通知栏(经测能用)

展开通知栏(未测试)

转自文章: 折叠与展开通知栏方法

最常见的表现形式就是 音乐播放服务 ,应用程序后台运行时,用户可以通过通知栏,知道当前播放内容,并进行暂停、继续、切歌等相关 *** 作。

以上就是前台服务的创建过程,相关注释已经很明白了,具体使用可以查看文末的Demo。

服务创建完毕,接下来就可以进行服务的启动了,启动前不要忘记在清单文件中进行前台服务权限的添加:

关于 前台服务 的介绍及使用就到这里了,相关使用已上传至 Github开发记录 ,欢迎点击查阅及Star,我也会继续补充其它有用的知识及例子在项目上。

用前台服务相比后台服务更不容易被系统杀死,可以起到比较长久的驻留。

在开发过程中,发现前台服务蓝牙扫描会被阻。系统提示start scan is blocked。这个是系统阻止了蓝牙设备的运行,只能在设置上放行。比如小米:设置->电量和性能->应用配置-> 应用APP

默认情况下,如果应用以 Android Q 为目标平台,则在访问外部存储设备中的文件时会进入过滤视图。应用可以使用 ContextgetExternalFilesDir() 将专用于自己的文件存储在特定于自己的目录中。

1 临时停用分区存储行为:

2 如何实现隔离存储:

21 ApplicationInfo新增PRIVATE_FLAG_REQUEST_LEGACY_EXTERNAL_STORAGE标记

PackageParserjava:

ApplicationInfojava:

22 grantRuntimePermission()重新挂载视图

apk启动时默认挂载runtime/default视图,grantRuntimePermission()时如果是READ_EXTERNAL_STORAGE或WRITE_EXTERNAL_STORAGE,则会获取挂载模式重新挂载对应视图。

PermissionManagerServicejava:

获取挂载模式这块android10有修改,没有设置Legacy标志的话,总是获取default挂载模式,没有读写权限。

android 10会设置属性[persistsysisolated_storage]: [true],因此走到if(ENABLE_ISOLATED_STORAGE)中的getMountMode()。

正常模式下hasLegacy=false,走到if判断的DEFAULT分支;legacy模式hasLegacy=true,与之前保持一致,有write权限就走到WRITE模式分支。

23 Legacy Storage属性对权限的影响

安装apk时,就会根据requestLegacyExternalStorage属性来对ops state进行设置,修改OP_LEGACY_STORAGE的默认状态。

PermissionPolicyService启动时首先进行权限变化监听:

APK安装时,会根据requestLegacyExternalStorage属性来通知storage权限变化,调用关系如下:

最终调用到PermissionPolicyService的监听函数synchronizePackagePermissionsAndAppOpsForUser(),进行默认权限获取和设置。

当apk安装时,声明了requestLegacyExternalStorage="true"属性,并且声明了READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE,那么addOpIfRestricted()就会将LEGACY_STORAGE设置为allow模式。

3 sdcard路径权限说明:

/mnt/runtime/default:

/mnt/runtime/read:

/mnt/runtime/write:

/sdcard/Android/data:

4 sdcard文件存储示例:

41 getExternalFilesDir()随卸载而删除

42 媒体文件

媒体文件使用MediaStore *** 作,卸载后不会删除。

访问其他应用生成的照片、视频、音频,需要READ_EXTERNAL_STORAGE权限。

43 存储访问框架(SAF)

访问其他应用创建的文件,例如"Download"目录,必须使用存储访问框架,用户通过框架选择特定文件。

44 照片中的位置信息

需要ACCESS_MEDIA_LOCATION权限,才能获取元数据中的位置信息。

通知管理可以管理所有应用的通知权限,您可以自行选择各应用通知的展开方式。

设置方法:

1、前往「设置 > 通知与状态栏 > 通知管理」。

2、可以选择锁屏通知的显示方式,显示或隐藏内容;还可以选择来通知时在桌面图标上显示数字角标、圆点角标或无角标。

开启应用的通知权限后,应用的常规推送会集中展示在通知中心。在解锁后的任意屏幕下,从屏幕顶部向下轻扫,即可看到通知中心的消息。

若通知中心里有您不感兴趣的消息,您可以通过以下两种方式删除通知:

1、向左/向右滑动单个通知,出现删除图标后,点击删除图标进行删除,或继续向左滑动直接删除。

2、点击通知中心右下角全部清除,将通知一次性全部删除。

注:本回答适用于ColorOS系统。

以上就是关于Android实现类似qq,微信消息悬浮窗通知全部的内容,包括:Android实现类似qq,微信消息悬浮窗通知、[Android]展开/收起通知栏、Android通知栏前台服务等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9296406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存