我是Google Play上两个闹钟应用的开发者。我试图让他们使用Android 6.0。但是,打Do模式使它不会响起。我将它们放在白名单上,我放置了一个前台通知图标,我不确定我还能做什么-在“打mode”模式下,“警报管理器”警报仍然被忽略。不过,“时钟”应用程序(这是Google Play而不是AOSP应用程序)有所不同。在“时钟”应用上启用警报后,“ adb deviceidle step”将始终显示为“ active”,而不会显示为“ idle”,“ idle_pending”或其他任何内容。
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 in KitKat am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, scheduleToTime+1, amSender);
和ReceiverAlarm类:```public class ReceiverAlarm extends BroadcastReceiver{
@Overridepublic void onReceive(Context context, Intent intent) { if (wakeLock == null) { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Theme.appTitle); wakeLock.acquire(); } X.alarmMaster.startRingingAlarm(true);} 以及X.alarmMaster.startRingingAlarm()方法的相关部分: if (wakeLock == null) { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Theme.appTitle); wakeLock.acquire(); }
以及X.alarmMaster.startRingingAlarm()方法的相关部分:
if (screenWakeLock == null) { PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); screenWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, Theme.appTitle+" scr"); screenWakeLock.acquire(); } Intent alarmIntent = new Intent(Intent.ACTION_VIEW); alarmIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); alarmIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); alarmIntent.setClass(context, ActivityAlarmAlarm.class); context.startActivity(alarmIntent);
```