在我的项目中,我使用AlarmManager来触发每日闹钟,但当开始闹钟时,会出现以下toast消息:
Background activity start from com.example.nameOfApp blocked. See g.co/dev/bgblock
更新代码:
-------设置AlarmClock方法-------
private void setAlarmClock(Calendar calendar, int alarmId, String time, String timeOfTheDay, boolean action) {
AlarmManager manager = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getActivity(), AlarmClockReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getActivity(), alarmId, intent, 0);
if (action) {
manager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, pendingIntent);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
}
} else {
manager.cancel(pendingIntent);
}
}
-------警报时钟接收器类-------
public class AlarmClockReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String alarmAction = AlarmClock.ACTION_SET_ALARM;
Intent i = new Intent(alarmAction);
i.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
i.putExtra(AlarmClock.EXTRA_MESSAGE, "Time for taking medicine!");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
}
此外,在AndroidManifest我包括以下行:
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
我知道这与新的Android Q隐私更改有关。从上述链接可以看出:
在Android Q上运行的应用程序只有在满足以下一个或多个条件时才能启动活动:
...
应用程序从系统接收通知PendingIntent。在服务和广播接收器的挂起意图的情况下,应用程序可以在发送挂起意图后启动几秒钟的活动。
如果我理解正确的话,这正是我的情况。尽管如此,还是出现了上述toast消息。
只有在使用方法setContentIntent在通知中设置意图时,PendingContent才有效(以便启动活动)。因此,您可以做的是发布通知,而不是直接启动活动。当用户点击通知时,挂起的意图将用于启动活动。编辑:作为替代方案,您需要请求SYSTEM\u ALERT\u窗口权限,但您将无法在Android Go上执行应用程序,因为无法在该版本上使用此权限。
当应用程序处于活动状态时,所有操作都正常运行,但当没有任何活动运行时,我仍然通过firebase notification获得一个带有app_name和Body的通知,并打开MainActivity。 这是我的MyFirebaseMessagingService类:- 我看到了一个类似的问题,但对我的情况没有帮助。
乍一看,我试图做一些相当简单的事情,但我做不到。我有一个按钮和两个隐藏的div。按下按钮时,我希望第一个div显示,n秒后隐藏,然后第二个div显示。 HTML: 包含JS的完整代码如下所示:https://jsfiddle.net/439xbfe5/ 我已经在这里检查了答案:jQuery显示5秒钟,然后隐藏 这个代码的问题是#div2在#div1消失之前出现: 同样的问题: 我还尝试创建一个阻塞
我正在制作一个应用程序,使用ActivityRecognition API跟踪用户在后台的活动,如果用户在指定的时间段(例如1小时)内保持在同一位置,则系统会推送通知,告诉用户散步。我已经实现了活动识别,但仅适用于打开应用程序的情况。显然,Google API客户端需要保持连接才能发送活动更新。我的问题是-对于后台活动跟踪,什么是更好的解决方案: 1)在主活动(或单独活动)中实现警报管理器,该活动
我有一个小的vertx应用程序。一个超文本传输协议垂直获取一个请求,并通过带有请求-响应模式的eventbus发送它。所以类似于: 在DB Vertical中,我使用消费者获取一条消息,发送到DB,进行一些更改并发送回HTTP verticle。我的问题是,我有一个必须进行大量检查的删除操作,所以这个过程可能需要10秒钟。此时HTTP verticle仍然可以获得一些新请求,但DB consume
我有一个使用新工具栏的活动。在这个工具栏中,我只有一个图标...我的搜索视图图标。当我单击该图标时,它会在工具栏中打开一个EditText,并且能够写下我想要的东西。问题是,当我单击“搜索”图标时,我的活动(带有片段的帧布局)的内容被重新加载。 编辑: 另外:当单击图标时,它会重新加载活动并打开EditText,然后调用activity SearchResult,如果我在该活动中按后退按钮,我会返
我正在处理活动识别API,试图使其在后台运行。因此,我创建了一个连接到Play Services的服务,并且一直处于活动状态。当服务被销毁并重新创建时,我要干杯了。问题是,一段时间后,即使服务正在运行,它也会停止检测活动。 下面是该服务的一些代码。 我还覆盖了onConnectionSuspend 这段代码正常工作了一段时间,然后突然停止了。有人知道为什么吗? 谢谢。