Tencent / mars

Mars is a cross-platform network component developed by WeChat.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

精确闹钟

imndx opened this issue · comments

Android 13之后,对精确闹钟的限制越来越严格,只允许特定类型的应用使用,是否有其他方案?

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;
}