- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 BootReceiver 并且正在使用 android.intent.action.BOOT_COMPLETED 来重新配置用户在我的应用程序中发出的任何警报,然后手机关机。
我正在使用 AlarmManager 再次设置警报。警报存储在 SQLite 数据库中。
public class BootReceiver extends BroadcastReceiver {
private Context mContext;
@Override
public void onReceive(Context c, Intent intent) {
mContext = c;
try {
cursor.moveToFirst();
do {
Intent i = new Intent(mContext, AlarmReceiver.class);
i.putExtra("alarm_message", cursor.getInt(1));
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, (int)System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager am = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cursor.getLong(4), pendingIntent);
Log.e("DB", "Future alarms was set after reboot");
} while (cursor.moveToNext());
} catch (Exception e1) {
Log.e("DB", "DB is empty");
}
cursor.close();
但是当警报即将发生时,logcat 给我这个:
Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=-1, uid=10067
Unable to send startActivity intent
W/ActivityManager(1584): java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.BOOT_COMPLETED from pid=-1, uid=10067
02-19 23:42:26.989: W/ActivityManager(1584): at com.android.server.am.ActivityManagerService.broadcastIntentLocked(ActivityManagerService.java:10310)
02-19 23:42:26.989: W/ActivityManager(1584): at com.android.server.am.ActivityManagerService.broadcastIntentInPackage(ActivityManagerService.java:10587)
02-19 23:42:26.989: W/ActivityManager(1584): at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:228)
02-19 23:42:26.989: W/ActivityManager(1584): at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:177)
02-19 23:42:26.989: W/ActivityManager(1584): at android.app.PendingIntent.send(PendingIntent.java:400)
02-19 23:42:26.989: W/ActivityManager(1584): at com.android.server.AlarmManagerService$AlarmThread.run(AlarmManagerService.java:692)
到目前为止,我的 AlarmReceiver.class 中唯一的东西是:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("AlarmReceiver", "Alarm received");
我有所有适当的权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
并设置接收器:
<receiver android:name=".AlarmReceiver"></receiver>
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
我已经看到在此期间取得成功的示例,但无法摆脱拒绝许可的情况。我错过了什么?
最佳答案
@Override
public void onReceive(Context c, Intent intent) {
...
Intent i = new Intent(mContext, AlarmReceiver.class);
i.putExtra("alarm_message", cursor.getInt(1));
PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, (int)System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
...
}
在您的 BootReceiver
中,您正在创建一个 PendingIntent
并将其传递给 onReceive(...) 接收的
- 查看上面 Intent
getBroadcast(...)
的第三个参数。
我猜你的意思是传递 i
作为参数而不是 intent
。
关于Android,使用 BOOT_COMPLETED Intent 拒绝权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9354360/
我的应用程序需要在后台运行一项服务,并且我希望它在手机开机时自动启动。我有 BOOT_COMPLETED 的常用 intent-filter,但发生的事情是...... 我打开手机。 它会一直启动到锁
我已经创建了一个 Android 应用程序,它应该在 BOOT 之后启动服务。它在 Nexus 5 手机上工作得很好,但我不能让它在华为平板电脑 (Mediapad X2) 上工作。我正在使用 And
我正在编写一个小型 Android 应用程序,它会在设备启动时启动我的服务。应用程序在所有 Android 版本 4.4.2(Mi Note 4G,必须在其安全应用程序中启用权限)、5.0(Lenov
是否每个设备都发送 BOOT_COMPLETED?我想在启动完成时启动一个 Activity 。 我将以下内容放在 list 中:
我想在设备启动完成时显示一个警告对话框。广播接收器没有问题,工作正常。但是当启动完成时,没有打开的 Activity ,因此我在这里得到 NullPointerException。在这种情况下如何显示
我想在设备启动时启动一个 alram,为此我做了以下事情 1) 用户权限 2) 在 list 文件中添加具有 Intent 操作的接收器
首先,我知道已经有数百个此类问题被提出,但我已经检查了一段时间,仍然找不到任何解决方案。 我见过 this answer说 BOOT_COMPLETED 不会发送到应用程序,除非用户在 Android
我知道这个问题在网站上被问了很多,但是,我似乎找不到解决方案。当应用程序未运行时,不会调用我的 BOOT_COMPLETED 接收器。 list :
我正在尝试使用尽可能少的代码从我的 apk 启动外部服务。在 4.0 AVD 上测试包并验证 logcat 中的响应似乎给出了正确的结果;但是,在实际设备上它不会加载。实际上,它甚至似乎根本没有在 l
我的应用程序每天推送一次通知(这是正常工作的)但在设备重启后通知不会再次触发。 我试图设置一个监听 BOOT_COMPLETED 的 BroadcastReceiver,但没有成功。 AndroidM
我目前正在做一个需要在另一个线程中运行的后台服务的 android 应用程序。问题是我想在 BOOT_COMPLETE 之后启动它,并且不希望它阻塞我的主线程。 有人知道吗? 最佳答案 您必须使用 B
我查看了本网站上的几篇关于BOOT_COMPLETED 未调用Broadcast Receiver 的帖子。我认为我的问题类似于这个问题 BroadcastReceiver not working a
我做了一个应用程序作为教程来学习如何在手机重启后重新启动已删除的闹钟。重新启动后,BroadcastReceiver 收到 BOOT_COMPLETED 操作并启动服务,该服务将重新启动所有警报。警报
我有一个关于重新安排任务的问题(带警报)我试图在未来的确切时间和日期设置任务然后我关闭了模拟器然后在等待弹出布局之后重新打开它当时间和日期到期时,我收到错误消息,提示无法在屏幕上打开(应用程序/Act
我想在我的 Android 应用程序中收听 APN 变化。 因此,我在 android.intent.action.BOOT_COMPLETED 上启动了一个服务。该服务启动一个 ContentObs
我需要在重启时更新一些警报,但我需要更新的一些信息在外部存储器中。 BOOT_COMPLETE 标志在 SD 卡完全安装之前设置,因此无法立即完成此更新。关于如何准确确定 SD 卡安装时间的任何建议?
有没有办法检测设备开机但是BOOT_COMPLETED广播?我知道我可以使用 BOOT_COMPLETED RECEIVER 捕获广播,但是是否有任何东西在设备打开后直接触发,例如,如果用户打开设备并
我正在尝试注册我的服务以在手机启动时启动。 我在我的服务类中设置了一个 BOOT_COMPLETED BroadcastReciever: public int onStartCommand(Inte
我已经注册了一个名为 CheckReceiver 的 BroadcastReceiver:-
我想在模拟器中使用操作 BOOT_COMPLETED 检查 BROADCAST RECEIVER。 这是我的代码 public class AutoRunService extends Broadca
我是一名优秀的程序员,十分优秀!