Tag: alarmmanager

即使重新启动后,“警报pipe理器”仍然存在

我真的很陌生,我一直在研究闹钟。 如果当天有生日,我要报警。 我已经使用了警报pipe理器。 我很困惑,因为我已经读过它重新启动后清除。 我没有一个Android手机,所以我只是使用模拟器。 这是我的代码: public void schedAlarm() { AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(this, AlarmService.class); pendingIntent = PendingIntent.getBroadcast(this, contact.id, intent, PendingIntent.FLAG_ONE_SHOT); am.setRepeating(AlarmManager.RTC, timetoAlarm, nextalarm, pendingIntent); } 我做了这个BroadcastReceverreplaceAlarmSerivce在这里: public void onReceive(Context context, Intent intent) { nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); CharSequence from = "It Birthday!"; CharSequence message =" Greet your friend."; […]

PendingIntent上使用了什么“requestCode”?

背景: 我正在使用PendingIntent通过AlarmManager进行报警。 问题: 起初我以为要取消以前的那个,我必须提供我以前用过的确切的requestCode来启动报警。 但后来我发现我错了,因为取消API说: 使用匹配的意图删除任何警报。 任何types的意图匹配此警报(由filterEquals(Intent)定义)的警报将被取消。 看“ filterEquals ”,文档说: 确定两个意图是否相同意图解决(过滤)的目的。 也就是说,如果他们的行为,数据,types,类别和类别是相同的。 这并不比较意图中包含的任何额外数据。 所以我没有得到什么“requestCode”是… 问题是: 什么是“requestCode”用于? 如果我使用相同的“requestCode”创build多个警报怎么办? 他们互相覆盖吗?

Android:获取所有使用AlarmManager设置的PendingIntents

我正在设置这样的闹钟: alarmManager.set(AlarmManager.RTC_WAKEUP, alarmTime, pendingEvent); 我有兴趣去除之前设置的所有警报,清除它们。 有没有办法让我这样做,或得到所有目前设置的警报,以便我可以手动删除它们?

AlarmManager不能在多个设备上工作

我的应用程序使用AlarmManager,从4年前开始工作。 但是我注意到它在一些设备上开始失败。 我敢肯定,代码是正确的(我使用WakefulBroadcastReceiver,并设置有效的AndAllowWhileIdle设备与打盹),因为它在Nexus设备上完美的工作,但它在一些制造商(华为,小米…)的设备失败。 例如,华为设备有一种杀死应用的电池pipe理器,当一个应用被杀死时,预定的告警被取消。 因此,在华为电池pipe理器中将应用设置为“受保护”即可解决问题。 但是最近我注意到它没有使用更多的设备:小米,三星(也许它与新的“智能pipe理器”有关?)…似乎这种行为正在成为一个标准:杀死后台应用程序。 任何人都知道吗? 任何方式来确保警报被解雇?

从Activity外部调用startActivity()?

我正在使用AlarmManager来触发广播信号的意图。 以下是我的代码: AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE); Intent i = new Intent(this, Wakeup.class); try { PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0); Long elapsed += // sleep time; mgr.set(AlarmManager.RTC_WAKEUP, elapsed, pi); } catch(Exception r) { Log.v(TAG, "RunTimeException: " + r); } 我从一个Activity调用这个代码,所以我不知道我怎么会得到以下错误… ERROR/AndroidRuntime(7557): java.lang.RuntimeException: Unable to start receiver com.wcc.Wakeup: android.util.AndroidRuntimeException: Calling startActivity() from outside of […]

AlarmManager Android每天

我正在制定一个计划。 它应该在每天下午1点或2点运行… 目前我只能让它运行每10秒或10分钟… Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class); pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0); AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(System.currentTimeMillis()); calendar.add(Calendar.SECOND, 10); alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); Toast.makeText(AndroidAlarmService.this, "Start Alarm", Toast.LENGTH_LONG).show(); 谢谢

如何阅读“adb shell dumpsys alarm”输出

我正在努力适当地设置闹钟,并了解取消和重新安排闹钟的机制。 我发现,有一个adb命令来检索设备上的所有警报,但我还没有find一个文档,解释输出的格式。 我明白了,我在这里要求了很多的解释,所以如果有人会给出“adb shell dumpsys alarm”的详细解释的链接,我会非常感激。 所以,这里是问题: 未决的警报批次:23 一个。 “23”是一些当前活动的预定警报吗? 批次{4293d3a8 num = 1 start = 1369361 end = 1407261}: RTC#0:报警{4293d358 type 1 com.android.chrome} type = 1 whenElapsed = 1369361 when = + 19s304ms window = -1 repeatInterval = 0 count = 0 operation = PendingIntent {429e4500:PendingIntentRecord {429dbbc8 com.android.chrome broadcastIntent}} 一个。 'num = 1','start = […]

我怎样才能正确传递独特的额外事项,以待处理的意图?

我遇到了一个与alarmManager和挂起的意图与extras将与之一起的问题。 如果我设置了多个闹钟,他们将会closures,但附加function保持不变。 我已经读过这些问题: android等待意图通知问题 Android继续caching我的意图额外,如何申报一个待定的意图,保持新鲜的额外? 我曾试过: 为每个未决意图分配一个唯一的ID和 使用所有悬而未决的意图标志, 一切都无济于事。 我不知道为什么它不起作用。 这是一个代码片段: Intent intent = new Intent(con, AppointmentNotificationReciever.class); intent.putExtra("foo", bar.toString()); int id = randomNum; PendingIntent sender = PendingIntent.getBroadcast(con, id, intent, PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, scheduleExecution, sender);

如何在Android中设置闹钟?

这个问题已经被回答为简单的解决scheme请检查这个 以下是我的代码可以任何身体请告诉我为什么它不工作。我已经从这个教程中学到了。 但它不起作用,任何帮助将是可观的。 我的代码是 import java.util.Calendar; import android.app.Activity; import android.app.AlarmManager; import android.app.ListActivity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Toast; public class Notify extends Activity { Button btn; /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) […]

如何在Android 6.0处于打盹模式时使闹钟pipe理器工作?

我是Google Play上两个闹钟应用的开发者。 我正试图让他们使用Android 6.0。 但是,打盹模式使它不会响。 我把它们放在白名单上,我把一个前台通知图标,我不知道还有什么我可以做的 – 当在打盹模式,警报pipe理器警报仍然被忽略。 时钟应用程序(这是一个谷歌播放,而不是AOSP应用程序),但是,是不同的。 当时钟应用程序启用闹钟时,“adb deviceidle step”将始终为“活动”,永不“空闲”,“闲置”或其他任何内容。 Android在这里作弊,给自己的应用程序更多的权力,又名。 “拉苹果”? Google Play上的所有闹钟应用程序都将无法使用吗? 这里有一种担心,这些都是优质的应用程序,每个都需要一年的兼职开发时间,对我来说是很大的收入来源。 任何线索我如何能得到这些工作将是一个巨大的帮助。 设置AlarmManager的意图: Intent intent = new Intent(context, ReceiverAlarm.class); if (android.os.Build.VERSION.SDK_INT >= 16) { intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); } amSender = PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT); //FLAG_CANCEL_CURRENT seems to be required to prevent a bug where the intent doesn't fire after app reinstall […]