我想在我的应用中收到短信,但我不希望我的Android显示有关该事件的通知。
我被宣布
<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" />
书面代码
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();
}
}
}
}
并尝试设置优先级
<intent-filter android:priority="100">
但不行!电话显示通知!
拥有Android 4.4.2(API 19)(Samsung Note 3)
答案 0 :(得分:1)
从KitKat(4.4)开始,您的应用程序将需要成为默认的SMS应用程序以禁止通知,因为默认应用程序负责发布它们。试图中止SMS_RECEIVED
广播不再有效。系统会忽略任何中止该广播的尝试。此外,默认应用程序侦听SMS_DELIVER
广播,该广播也无法中止,因为它仅传送到默认应用程序。您可以参考以下链接,了解有关使您的应用有资格成为默认短信应用的信息。