我目前正在尝试制作某种音乐播放器应用程序。为了播放,我创建了一个单独的服务。因为我想让它一直播放,所以我调用 Service.startForeground()。在针对 Android O(SDK 级别 27)进行编译时,由于 Android“新”后台执行限制,我必须使用 Context.startForegroundService()。
这工作正常,但是当用户暂停播放时,我希望通知可以被忽略。过去,我能够调用 stopForeground(),但这对 Android O 没有影响。是否有其他方法可以在后台和前台服务之间切换或有其他机会实现此行为?像 Google Play Music 这样的应用程序正是使用这种通知模式,但它们是如何做到的呢?
出现这种情况是因为我使用了错误的方法。您必须使用
stopForeground(STOP_FOREGROUND_DETACH)
而不是 stopForeground(true)
。
使用
停止前景(STOP_FOREGROUND_DETACH)
而不是
停止前景(真)
我遇到了同样的问题并尝试了很多解决方案,但后来我知道我在 AndroidManifest.xml 文件中授予了一些权限,但这些权限没有用,当我评论它们时它工作正常
注释的权限如下
<!-- <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/> -->
<!-- <uses-permission android:name="android.permission.GET_ACCOUNTS" /> -->
<!-- <uses-permission android:name="android.permission.READ_CONTACTS" /> -->
<!-- <uses-permission android:name="android.permission.VIBRATE"/> -->
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE"/> -->
<!-- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> -->