UAS*_*UAS 10 sms android broadcastreceiver
我想在我的应用程序中收到短信,但我不希望我的Android显示有关该事件的通知.算法:
收到短信(没关系)
如果这是具有特殊内容格式的短信(对于我的应用) - 使用我的应用处理它并且不显示通知.
如果这是一条简单的消息 - 我不想处理它,所以必须显示通知.
我试图使用有序广播,但它没有帮助.在某处我读到SMS_RECEIVE的广播没有订购,但我看到了一些应用程序,可以在没有通知的情况下接收短信.
有没有人可以帮助我或告诉我解决这个问题的正确方法?
abortBroadcast()在广播中呼叫没有帮助
在清单中的intent-filter //中设置优先级
<intent-filter android:priority="100"> /*your receiver get high priority*/
Run Code Online (Sandbox Code Playgroud)
//在广播接收器中
if (keyword_match)
{
// Stop it being passed to the main Messaging inbox
abortBroadcast();
}
Run Code Online (Sandbox Code Playgroud)
这应该可以通过注册您的应用程序来接收SMS消息,然后在检测到您的消息到达时使用abortBroadcast().你说abortBroadcast()不起作用 - 短信接收器肯定会处理短信吗?
对于其他想要这样做的人,请继续阅读......
首先,在AndroidManifest.xml中声明SMS接收器,并确保该应用程序有权接收SMS消息.
<receiver android:name="mypackage.SMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
Run Code Online (Sandbox Code Playgroud)
以下是处理SMS消息的一些示例代码:
public class SMSReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Bundle extras = intent.getExtras();
Object[] pdus = (Object[])extras.get("pdus");
for (Object pdu: pdus)
{
SmsMessage msg = SmsMessage.createFromPdu((byte[])pdu);
String origin = msg.getOriginatingAddress();
String body = msg.getMessageBody();
// Parse the SMS body
if (isMySpecialSMS)
{
// Stop it being passed to the main Messaging inbox
abortBroadcast();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
不确定我是否确切知道您要做什么,但据我了解,您只是想知道如何不发送通知?
你为什么不能这样做:
If(instance 2){
//do your processing
}else{
//send notification
}
Run Code Online (Sandbox Code Playgroud)
如果你的意思是你想阻止操作系统广播它那么你可能会运气不好,因为我不相信你能做到这一点
| 归档时间: |
|
| 查看次数: |
11926 次 |
| 最近记录: |