问题标签 [android-broadcastreceiver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1499 浏览

android - Android - 服务发送多个本地通知时出现问题

我已经继承了一个 Android 应用程序的代码库,并且我正面临一个与本地通知有关的特别问题。

这个想法是为将来安排的每个事件发送通知,同时考虑到用户希望在事件前多少分钟收到通知的提醒偏好。

一切正常,除了在第一次引发通知之后,如果用户在事件开始之前打开应用程序,通知会再次引发。每次在(事件开始日期 - 提醒)和事件开始日期之间打开应用程序时,都会发生这种情况。

已经看过了这个,也没有运气。我读过使用服务可能会导致这个问题,有些人建议删除它,但我认为这是必要的,因为在应用程序关闭时也必须抛出通知。

目前代码结构如下:

编辑 - TabBarActivity 的更新描述

在 TabBarActivity 中,我有调度 AlarmManager 的方法scheduleTravelNotification。每次在本地数据库中添加新事件或更新现有事件时,都会执行此方法。TabBarActivity 在 onCreate 和 onResume 方法中运行此方法。TabBarActivity 也是通知的目标 - onclick 事件。

这是TravelNotificationReceiver.java(我应该使用 LocalBroadcastReceiver 而不是 BroadcastReceiver 吗?)

TravelNotificationService.javaNotificationService.java设置扩展为 type = "Travel"、flags = 0、title = "something" 和 text = "something else"。

编辑 - 这是 NotificationHelper.buildNotification 的代码

谢谢你的回答!

编辑我也看到了这个但没有接受的答案,而这篇文章提出了一些我认为它已经通过 if(alarmTime < currentTime){ return; 进行管理的内容。} 在 scheduleTravelNotification

0 投票
1 回答
3314 浏览

android - Android广播接收器自定义权限

鉴于 Android 中的安全模型,我正在尝试自定义权限。我正在尝试在我的应用程序中强制执行广播者权限。场景是我有一个活动A,它触发了这样的广播(有权限):

在这个活动 A 中,我在 onCreate 中注册了一个接收器,如下所示:

我希望接收者能够接收广播,因为它具有所需的权限。但它没有接收到活动发出的广播。关于我为什么不使用 LocalBroadcastManager 可能存在争议,但我的动机是弄清楚为什么这种方法没有按预期工作。

我没有在清单中声明我的接收器并仅动态注册它。以上所有代码均来自同一应用程序中的单个活动。所以这里不涉及IPC,只是一个简单的例子来检查权限。任何帮助,将不胜感激。

0 投票
1 回答
302 浏览

android - 在onReceive中处理多个intent.getStringExtra的干净方法?

我创建了一个WebService类来处理对 Web 服务的多个不同请求,这个类的广播和意图根据类key中最初调用的方法而有所不同WebService。我被困在如何正确处理这个问题上WebServiceReceiver......

这是来自的重要部分WebService

这是我的onReceive

我所拥有的确实有效,但是就像我在代码注释中提到的那样,它感觉不是正确的方法。

有没有更好的方法来解决这个问题?我只是想重新使用它onReceive来处理所有WebService广播。

0 投票
3 回答
14471 浏览

android - 警报管理器在 Android 6.0 上无法在后台运行

这是我的Activity代码,

这些是我在我的应用程序中拥有的所有权限,

这是我的BroadcastReceiver代码,

我已经BroadcastReceiver在清单中注册了我的,

上面的代码在后台成功执行了BroadcastReceiverpre-MarshMallow 设备,但在 MarshMallow 设备上,BroadcastReceiver并没有被执行。有谁知道这里会发生什么?谢谢。

0 投票
2 回答
1318 浏览

java - 以编程方式注册 BOOT_COMPLETED 广播

我正在尝试注册我的服务以在手机启动时启动。

我在我的服务类中设置了一个 BOOT_COMPLETED BroadcastReciever:

但是它没有被调用。我在清单中设置了权限:

你知道我在手机启动时让这个广播在我的服务中触发时缺少什么(没有在清单中注册广播)吗?

回答

在这种情况下,我必须使用 XML 来注册一个在启动时调用我的服务的类:

在清单中:

0 投票
0 回答
241 浏览

android - 多个 GCM 接收器 - 推送有时不起作用

我的应用中有两个 GCM 接收器。其中一个由 urbanAirship 使用,另一个由我们的应用程序用于另一项服务。我现在遇到一个奇怪的问题。有时推送通知适用于安装,如果我尝试卸载并再次安装它,我什么也收不到。我想这与 GCM 注册令牌有关,但我在日志中没有看到任何错误。这是清单文件中我的 GCM 接收器

这是图书馆的接收器

0 投票
0 回答
531 浏览

android - 使用应用程序上下文的 BroadcastReceiver 中的 ReceiverCallNotAllowedException

我在 Android 版本 4.1.2 上收到以下错误:

这是导致错误的代码。此接收器是静态注册的(在 AndroidManifest.xml 中)而不是动态注册:

我过去遇到过这个错误,发现我的问题是由于传递给广播接收器的上下文没有能力调用 registerReceiver() 引起的。

我发现一些资源建议您可以将传递给广播接收器的上下文转换为应用程序上下文,然后在应用程序上下文上调用 registerReceiver()。这适用于 Android 4.2 及更高版本,但在 4.1.2 上失败(可能更低,但尚未明确测试)。似乎转换为应用程序上下文应该允许调用 registerReceiver() ,但这似乎不适用于所有版本的 Android。

有人对这种行为有解释吗?

编辑:情节变厚了......我现在了解到这个崩溃发生在 android 版本 4.1.1、4.1.2、4.3.0 和 5.1.1 上,超过 93% 的崩溃发生在 4.1.2 上。我不确定我们是否会为此找到解决方案,但我的解决方法是永远不要从 BroadcastReceiver 调用 registerReceiver()。即使使用显然应该允许这样做的应用程序上下文,该行为似乎也是未定义和不可预测的。

0 投票
0 回答
45 浏览

java - 在主页创建应用程序快捷方式,无需午餐应用程序

我正在开发 Android 应用程序。我想在不吃午餐的情况下创建应用程序快捷方式。我也尝试过这段代码,但在此我们必须至少加载一个应用程序。但我想在设备应用程序中安装应用程序时创建应用程序快捷方式不需要午餐。就像 Flipkart 一样,一旦安装在设备中,它会自动生成应用程序快捷方式,无需午餐应用程序。

我也尝试使用 Broadcaster Receiver 来做到这一点,但我没有成功。我的代码如下所示。

清单.xml

应用广播服务.java

}

在此代码中,应用程序安装时未调用 Broascast Receiver。我不知道我在此缺少什么...?

0 投票
1 回答
1320 浏览

android - 带有wifi扫描的广播接收器不起作用

我在使用 AlarmManager 调用的服务中有以下代码(这很好用)但是当我开始 wifi 扫描(返回 true)时,我从未在我创建的 BroadcastReceiver 中收到结果:

我以前使用过带有 wifi 扫描的 BroadcastReceiver,但我不知道为什么这不起作用。

怎么了?

编辑:AndroidManifest.xml

0 投票
0 回答
101 浏览

android - android-通过使用 Broadcast 中断 while 循环来取消正在进行的 IntentService 下载

我正在使用 IntentService 从 url 下载文件,使用以下代码:

它可以正常工作,但是如果我想取消正在进行的下载或其中一个排队的文件,我仍然停留在这一步,我想我可以在取消按钮点击服务将发送广播听它,如果广播说打破while ((bytesRead = bis.read(buffer)) > 0)循环,它就会打破它。

这种情况甚至可能吗?

问候