如何为广播接收器定义IntentFilter

时间:2011-12-21 04:29:16

标签: android sms broadcastreceiver

因此,我尝试创建一个应用程序,在收到每条短信时显示一个Toast消息。我希望应用程序只显示toast,我目前使用此代码来显示它,但是当应用程序运行时我收到异常错误。我正在使用此代码

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 个答案:

答案 0 :(得分:1)

你必须在清单中输入你的广播接收者,然后在我们为我们的活动添加时添加意图过滤器。它也可以在运行时。

答案 1 :(得分:0)

你应该创建一个扩展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>