Android短信广播接收器

时间:2018-05-14 19:14:48

标签: android

在Manifest中注册BroadcastReceiver for SMS_RECEIVE,在Android 4.2上我的广播接收器即使在app关闭时也会被调用(也是最近的)。  但是在Android 7.0上,当应用程序正在运行时或在最近时调用它,如果应用程序关闭则不会被调用。我尝试使用服务和注册广播内部服务仍然相同的情况。

我的接收者是:

 <receiver
            android:name=".BroadcastReceiver.SMSBroadcastReceiver"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BROADCAST_SMS">
            <intent-filter android:priority="999">
                <category android:name="android.intent.category.DEFAULT" />
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>

缺少某种东西,或者其他任何方式,或现在它是如何运作的?

2 个答案:

答案 0 :(得分:1)

https://developer.android.com/guide/components/broadcasts提供以下信息:

  

从Android 8.0(API级别26)开始,系统对清单声明的接收器施加了额外的限制。如果您的应用程序的目标是API级别26或更高级别,则无法使用清单为大多数隐式广播声明接收器(广告不会专门针对您的应用)。当用户正在使用您的应用时,您仍然可以使用上下文注册的接收器。

还有一个关于在清单中声明静态服务/接收器的视频。

您可能需要更新代码才能使用job schedulerwork manager。谷歌i / o充满了工作经理视频。

答案 1 :(得分:0)

我认为您缺少运行时权限。它是在Android 6.0之后添加的  check this