你的 minSdkVersion 設定為 21 (Android 5.0 Lollipop),但 setAndAllowWhileIdle() 需要 API 23 (Android 6.0 Marshmallow),因此編譯時會報錯。
解決方法
1. 加入 API 檢查 (Build.VERSION.SDK_INT)
你可以加上條件判斷,讓 API 23 以上 使用 setAndAllowWhileIdle(),而 API 21-22 則使用 setExact():
🔹 這樣可以確保 低於 API 23 的裝置仍然可以執行鬧鐘。
2. (可選) 提高 minSdkVersion 至 23
如果你的應用 不需要支援 Android 5 (Lollipop),可以直接在 build.gradle 修改 minSdkVersion:
🔹 這樣就可以直接使用 setAndAllowWhileIdle(),不需要額外的 API 檢查。
最佳解法
如果你 希望支援 API 21 (Android 5),又要在 API 23 以上降低耗電,建議這樣寫:
🔹 這樣可以:
-
✅ API 21-22:使用
setExact(),保證準時執行 -
✅ API 23+:使用
setAndAllowWhileIdle(),允許低耗電模式 -
✅ API 31+ (Android 12+):自動請求
SCHEDULE_EXACT_ALARM權限
這樣你的鬧鐘就能在 各個 Android 版本 上正常運作 🎯
沒有留言:
張貼留言