当应用程序未运行时,BroadcastReceiver无法正常工作

ton*_*099 6 notifications android broadcastreceiver alarmmanager android-broadcast

在我的清单文件中,我已经声明了接收器.(如下)

<receiver android:name=".OnAlarmReceive" />
Run Code Online (Sandbox Code Playgroud)

但是,一旦我关闭了我的应用程序,我就无法收到警报和通知.显然,从来没有打过OnReceive我的电话Broadcast receiver.

public class OnAlarmReceive extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent arg1)
   {
       //various stuff
   }
}
Run Code Online (Sandbox Code Playgroud)

在MainActivity中,我的警报管理器类如下所示.

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
    Intent intent = new Intent("MY_ALARM_NOTIFICATION");
    intent.setClass(this, OnAlarmReceive.class);
    intent.putExtra("message", message);
    PendingIntent pendingIntent = PendingIntent
            .getBroadcast(MainActivity.this, 0, intent,
                    PendingIntent.FLAG_UPDATE_CURRENT);

    Calendar timeCal = Calendar.getInstance();
    timeCal.set(Calendar.HOUR_OF_DAY, hour);
    timeCal.set(Calendar.MINUTE, minutes);

    alarmManager.set(AlarmManager.RTC_WAKEUP, timeCal.getTimeInMillis(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)

我的表现如下:

    <receiver android:name=".OnAlarmReceive">
    <intent-filter android:priority="1">  
        <action android:name="MY_ALARM_NOTIFICATION"/>  
    </intent-filter>  
</receiver>  
Run Code Online (Sandbox Code Playgroud)

即使我关闭了我的应用程序,我该怎么做才能收到通知/警报.后台服务?

小智 0

你应该在清单中添加意图过滤器,如

receiver android:name=".SmsBroadCastReceiver">  
        <intent-filter android:priority="20">  
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
        </intent-filter>  
    </receiver>  
Run Code Online (Sandbox Code Playgroud)