Основная проблема: старайтесь не размещать трудоемкие функции в BroadcastReceiver.Он должен просто получить и инициировать дальнейшую обработку в связанной операции / услуге.
ОБНОВЛЕНИЕ:
Пожалуйста, проверьте следующие источники, которые могут быть полезны:
Подобные вопросы о StackOverflow:
Как отправить данные из BroadcastReceiver в Activity в Android?
Приемник Android SMS не работает
Пример демонстрации Android SDK:
android-sdk-windows \ samples \ android-8 \ ApiDemos \ src \ com \ example \ android \ apis \ os \ SmsMessagingDemo.java
И, конечно, стандартная документация по Android API: http://developer.android.com/reference/android/content/BroadcastReceiver.html
ОБНОВЛЕНИЕ2:
Добавлен скелет приложения, как он должен выглядеть.Обратите внимание, что просмотр содержимого не определен.Это потому, что ваше приложение будет иметь прозрачный экран.Для этого
@ android: style / Theme.Translucent
вводится под тегом Theme для этого действия в AndroidManifest.xml.
public class NotifySMSReceived extends Activity
{
private static final String LOG_TAG = "SMSReceiver";
public static final int NOTIFICATION_ID_RECEIVED = 0x1221;
static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter(ACTION);
this.registerReceiver(mReceivedSMSReceiver, filter);
}
private void displayAlert()
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Are you sure you want to exit?").setCancelable(
false).setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
}).setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
private final BroadcastReceiver mReceivedSMSReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION.equals(action))
{
//your SMS processing code
displayAlert();
}
}
};
}