Как определить IntentFilter для широковещательного приемника - PullRequest
3 голосов
/ 21 декабря 2011

Поэтому я пытаюсь создать приложение, которое будет показывать всплывающее сообщение при получении каждого текстового сообщения. Я хочу, чтобы приложение показывало только тост, и в настоящее время я использую этот код для его показа, но я получаю исключительную ошибку при запуске приложения. Я использую этот код

BroadcastReceiver BR = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText( context, "testing", Toast.LENGTH_SHORT ).show();

        }
    };


    IntentFilter filter = new  IntentFilter();

    registerReceiver(BR, filter);

Я почти уверен, что это фильтр намерений, но я не уверен.

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Вы должны сделать запись своего вещательного приемника в манифесте, а затем добавить фильтр намерений, как мы добавляем для нашей деятельности. Это возможно и во время выполнения.

0 голосов
/ 21 декабря 2011

Вы должны создать отдельный класс, который расширяет BroadcastReceiver, а затем переопределить метод onRecieve.

Здесь AlarmMain.this является основным классом и OneShotAlarm.class, который расширяет BroadcaseReceiver:

@Override
        public void onReceive(Context context, Intent intent) {
            Toast.makeText( context, "testing", Toast.LENGTH_SHORT ).show();

        }

Вы можетевызовите onRecieve () следующим образом:

Intent intentAlarm = new Intent(AlarmMain.this, OneShotAlarm.class);
operation = PendingIntent.getBroadcast(AlarmMain.this, 0, intentAlarm, 0);

alarmManager  = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, objDate.getTime(), operation);

Вы можете попробовать выполнить следующее, но это необязательно (включить следующий тег в AndroidManifest.xml)

<receiver 
    android:name="com.android.alarm.OneShotAlarm"
    android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER" />
    </intent-filter>
</receiver>
...