Я пытаюсь создать приложение, которое получает уведомления о входящих sms. Мне нужна помощь, поскольку входящие SMS-сообщения не обнаружены ни на одном устройстве. Я использую следующий код, который я получил здесь:Android SMS Broadcast Receiver не работает
http://karanbalkar.com/2014/09/display-incoming-sms-messages-in-android/
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 MySMSApp extends BroadcastReceiver {
public static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if (intent.getAction().equals(ACTION)){
Bundle bundle = intent.getExtras();
if (bundle != null){
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++){
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage message : messages){
String strMessageFrom = message.getDisplayOriginatingAddress();
String strMessageBody = message.getDisplayMessageBody();
Toast.makeText(context, "SMS Message received from:" +strMessageFrom, Toast.LENGTH_LONG).show();
Toast.makeText(context, "SMS Message content" +strMessageBody, Toast.LENGTH_LONG).show();
}
}
}
}
И манифест гласит. Я настроил приемник намерения, чтобы вызвать класс выше, но, похоже, это не так. Я не могу подключиться к эмулятору, чтобы подделать входящие sms, и поэтому я не знаю, что происходит.
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:theme="@style/FullscreenTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<receiver android:name=".SMSBroadcastReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" >
</action>
</intent-filter>
</receiver>
</activity>
</application>
совет Следуйте Маттиа в. Он прав. Кроме того, на всякий случай, не используйте последний целевой файл sdk, используйте тот же уровень api, что и в найденном вами учебнике. Что-то изменилось в Kit-Kat/Lollipop в отношении смс, поэтому вам может понадобиться обновить код из учебника, если вы хотите использовать последний номер уровня api. Кроме того, это не помешает добавить это, если вы поместите его в производство: (чтобы ваше приложение было невидимым для планшетов без возможности сотового телефона). –