如何为广播接收器定义IntentFilter

3

我正在尝试制作一个应用程序,每当收到文本消息时都会显示一个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);

我很确定是意图过滤器,但我不确定。


你最好也把你的Logcat发布出来。 - Lalit Poptani
什么异常错误?发布堆栈跟踪。 - Arnab Chakraborty
请发布您的Logcat错误。根据您提供的信息,很难提供帮助。 - Varun
2个回答

1

您需要在清单文件中添加广播接收器的条目,然后像我们为活动添加意图过滤器一样添加它。这也可以在运行时完成。


0
你应该创建一个继承BroadcastReceiver的单独的类,然后重写onReceive方法。
在这里,AlarmMain.this是主类, OneShotAlarm.class是继承BroadcastReceiver的类。
@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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接