观察奥利奥及其他地区的SMS内容提供商

时间:2018-08-03 04:14:05

标签: android android-service android-contentprovider

目标:观察SMS内容提供商以跟踪已发送的SMS,并在达到一定限制时通知用户。

有效方法:

  1. 定位API 22,我启动了(START_STICKY)后台服务,该服务初始化了一个ContentObserver,用于侦听SMS URI的更改。
  2. 由于Oreo不允许后台服务,因此我将其更改为一个前台服务,该服务显示有关服务正在运行但按预期运行的持久性通知。 (运行正常的后台服务,当父活动处于空闲状态时,它将在大约1分钟后停止运行)

在Oreo上运行

在阅读许多文章的同时,我发现诸如JobIntentService之类的东西可以在后台执行任务然后完成。由于我需要ContentObserver始终运行,或者至少在设备唤醒时才能运行,因此有什么更好的方法来实现这一目标。

持续的通知使我什至停止了该服务,因为它看起来很烦人。

参考文献

1 个答案:

答案 0 :(得分:0)

在Android 7+上,我们可以使用JobScheduler和addTriggerContentUri()解决此问题及其工作。

此示例代码及其实现方法记录在下面的博客文章中。

http://midhunhk.github.io/dev/2018/08/05/content-observer-service/

创建JobService

export default {
  renderCards() {
      ....
      ....
      ....
      }
}

}

安排JobService

class MyJobService : JobService() {  
 override fun onStartJob(params: JobParameters?): Boolean {  

    doAsync{
      // Do your content observer changes here

      jobFinished(params, true)
    }

    return true
}

override fun onStopJob(params: JobParameters?): Boolean {
    return false
}  

更多阅读内容:https://medium.com/google-developers/scheduling-jobs-like-a-pro-with-jobscheduler-286ef8510129