Android 无法进入BroadcastReceive的onReceive方法
我正在使用报警管理器调用接收器方法上的通知。我在里面放了一些调试代码,发现进程甚至没有进入 这是我的密码: Manifest.xmlAndroid 无法进入BroadcastReceive的onReceive方法,android,broadcastreceiver,alarmmanager,Android,Broadcastreceiver,Alarmmanager,我正在使用报警管理器调用接收器方法上的通知。我在里面放了一些调试代码,发现进程甚至没有进入 这是我的密码: Manifest.xml <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/App
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".Menu">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ContentInput"
/>
<receiver
android:process=":remote"
android:name=".NoticationBroadcast"/>
</application>
接收级
public class NoticationBroadcast extends BroadcastReceiver {
public static String NOTIFICATION_ID = "notification-id";
public static String NOTIFICATION = "notification";
@Override
public void onReceive(Context context, Intent intent) {
Log.e("ERROR", "beginning of on receive");
NotificationManager notificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = intent.getParcelableExtra(NOTIFICATION);
int id = intent.getIntExtra(NOTIFICATION_ID, 0);
notificationManager.notify(id, notification);
Log.e("ERROR", "end of on receive");
}
}
编辑:
我更改了一行代码
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
到
它工作得很好。但我不知道为什么。如果有人知道发生了什么,请告诉我。谢谢 参见此处:
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
您正在安排一个作业立即运行,显然不会被解雇
而在第二个版本(工作版本)中,您计划的作业比现在晚5000毫秒:
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (5000), pendingIntent);
更改此选项将按预期工作:
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + 5000,
pendingIntent);
我认为你的方法是错误的。如果我错了,请纠正我。您正在将通知对象发送到广播接收器,但可能无法正常工作。请尝试使用服务进行通知。您可以在google上获得许多有关带有通知的简单报警管理器的教程。我想我已经解决了这个问题。但我不知道我做了什么:奥运会组委会。我将尝试这种方法:)
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()
+ (5000), pendingIntent);
alarmManager.setExact(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() + 5000,
pendingIntent);