java.lang.SecurityException android.permission.SCHEDULE_EXACT_ALARM 錯誤
造成條件:
1. Android targetSdk 設定到 31 以上
2. 使用 Android 12 以上機型
3. 使用到 AlarmManager
錯誤截圖:
造成原因 :
缺少 Permission
AndroidManifest.cml 補上 Permission
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
google 說明
設定完後,可以到 APP 設定內查看 Alarms & reminders
Default 是開啟的
如何處理:
1. 取得 AlarmManager
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
boolean isPermissionAgreed = alarmManager.canScheduleExactAlarms();
2. 檢查權限
@RequiresApi(api = Build.VERSION_CODES.S)
public void checkPermission() {
AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
boolean isPermissionAgreed = alarmManager.canScheduleExactAlarms();
}
3. 使用者可能手動關閉,加入 if-else 但斷是否繼續執行 setAlarm 動作
if-else 判斷使用者是否將權限關閉,避免操作 Crash
後記
如果這篇文章對於你有幫助,可以幫忙分享給更多的人.文章內容如果有誤,可以在下方留言告知.本網站主要提供程式, 玩具相關資訊,可以訂閱獲得最即時的資訊.
留言
張貼留言