精确闹钟
imndx opened this issue · comments
imndx commented
Android 13之后,对精确闹钟的限制越来越严格,只允许特定类型的应用使用,是否有其他方案?
mars/mars/libraries/mars_android_sdk/src/main/java/com/tencent/mars/comm/Alarm.java
Lines 142 to 169 in cf3b121
private static PendingIntent setAlarmMgr(final long id, final long time, final Context context) { | |
final AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); | |
if (am == null) { | |
Log.e(TAG, "am == null"); | |
return null; | |
} | |
Intent intent = new Intent(); | |
intent.setAction("ALARM_ACTION(" + String.valueOf(Process.myPid()) + ")"); | |
intent.putExtra(KEXTRA_ID, id); | |
intent.putExtra(KEXTRA_PID, Process.myPid()); | |
PendingIntent pendingIntent; | |
if (Build.VERSION.SDK_INT < 23) { | |
pendingIntent = PendingIntent.getBroadcast(context, (int) id, intent, PendingIntent.FLAG_CANCEL_CURRENT); | |
} else { | |
pendingIntent = PendingIntent.getBroadcast(context, (int) id, intent, PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE); | |
} | |
if (Build.VERSION.SDK_INT < 19) { //KITKAT | |
am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, time, pendingIntent); | |
} else { | |
am.setExact(AlarmManager.ELAPSED_REALTIME_WAKEUP, time, pendingIntent); | |
} | |
return pendingIntent; | |
} | |