has*_*nan 6 sms android broadcast
我想要的是:我想成为第一个接收短信广播的人,如果短信只是我感兴趣的话我想取消广播,这样广播就不会到达任何其他应用程序/接收者(默认消息应用程序等) .我所知道的是:
我不知道的是:
我试图成为第一个接收广播的人:
我已经尝试取消广播了:
Mar*_*moy 11
这当然是可能的.在您的清单中注册接收器,如下所示:
<receiver android:name=".SmsReceiver">
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
在你的接收者的onReceive方法中写道:
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
//do your stuff
abortBroadcast();
}
}
Run Code Online (Sandbox Code Playgroud)
请记住在清单中设置接收短信息的权限,如下所示:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
Run Code Online (Sandbox Code Playgroud)
如果没有正确的权限集,它将使用以下logcat消息静默失败:
07-13 12:54:13.208: WARN/ActivityManager(201): Permission Denial: receiving Intent { act=android.provider.Telephony.SMS_RECEIVED (has extras) } to com.mypackage requires android.permission.RECEIVE_SMS due to sender com.android.phone (uid 1001)
Run Code Online (Sandbox Code Playgroud)
最后,另一个应用程序可能已经注册了一个比你的优先级更高的接收器,因此它会在你取消之前接收广播.因此,如果一切都失败了,请尝试尝试更高优先级的值.