Вот что у меня сейчас работает.Код, который я предоставляю, используется для блокировки входящих текстовых сообщений, но вы можете легко изменить его, включив только область, в которой он только предупреждает вас о входящих сообщениях и больше не обрабатывает их.
SmsReceiver.java
package com.android.SMS;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;
public class SmsReceiver extends BroadcastReceiver {
public static int MSG_TPE=0;
private String getAddress;
public void onReceive(Context context, Intent intent) {
String MSG_TYPE=intent.getAction();
if(MSG_TYPE.equals("android.provider.Telephony.SMS_RECEIVED")) {
Toast received = Toast.makeText(context,"SMS Received: "+MSG_TYPE , Toast.LENGTH_LONG);
received.show();
Bundle bundle = intent.getExtras();
Object messages[] = (Object[]) bundle.get("pdus");
SmsMessage smsMessage[] = new SmsMessage[messages.length];
for (int n = 0; n < messages.length; n++) {
smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
}
getAddress = smsMessage[0].getOriginatingAddress();
// Filter incoming messages
if(getAddress.equals("APPROVEDPHONENUMBER")) {
Toast approved = Toast.makeText(context,"Approved SMS from: " + smsMessage[0].getOriginatingAddress(), Toast.LENGTH_LONG);
approved.show();
// Message is approved and let through
} else {
Toast blocked = Toast.makeText(context,"Blocked SMS from: " + smsMessage[0].getOriginatingAddress(), Toast.LENGTH_LONG);
blocked.show();
// Message is blocked
abortBroadcast();
}
// End filter
for(int i=0;i<8;i++) {
System.out.println("Blocking SMS");
}
}
}
}
Это код, который обнаруживает входящее сообщение
if(MSG_TYPE.equals("android.provider.Telephony.SMS_RECEIVED")) {
Toast received = Toast.makeText(context,"SMS Received: "+MSG_TYPE , Toast.LENGTH_LONG);
received.show();
}
AndroidManifest.xmlРАЗРЕШЕНИЯ:
<uses-feature android:name="android.hardware.telephony" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
БЛОК ПРИЛОЖЕНИЯ:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<service android:name=".MyService" android:enabled="true"/>
<receiver android:name="SmsReceiver">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_SENT"/>
</intent-filter>
</receiver>
<service android:name=".MyServiceSentReceived" android:enabled="true"/>
<receiver android:name="SmsReceiver">
<intent-filter android:priority="2147483645">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
</application>
Важно разместить блоки обслуживания и приемника внутри вашего основного блока «приложения», как показано в коде выше.