【发布时间】:2022-09-28 03:06:41
【问题描述】:
我正在尝试使用 Jetpack Compose 设置警报但不起作用我正在尝试使用模拟器和在主线程上运行的应用程序进行测试,这是我的代码:
class MainActivity : ComponentActivity() {
lateinit var navController: NavHostController
private var alarmMgr: AlarmManager? = null
private lateinit var alarmIntent: PendingIntent
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val context= LocalContext.current
navController = rememberNavController()
NotePadReminderTheme {
val calendar: Calendar = Calendar.getInstance().apply {
timeInMillis = System.currentTimeMillis()
set(Calendar.HOUR_OF_DAY,6)
set(Calendar.MINUTE,34)
}
val alarmManager =
context.getSystemService(Context.ALARM_SERVICE) as? AlarmManager
val intent = Intent(context, AlarmReceiver::class.java)
val pendingIntent =
PendingIntent.getService(context, 3, intent,0)
alarmManager?.setExact(AlarmManager.ELAPSED_REALTIME,calendar.timeInMillis,pendingIntent)
// MainPage(navController =navController )
}
}
}
}
这是我的 Manifest.xml:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"
xmlns:tools=\"http://schemas.android.com/tools\">
<uses-permission android:name=\"android.permission.SCHEDULE_EXACT_ALARM\" />
<application
android:allowBackup=\"true\"
android:dataExtractionRules=\"@xml/data_extraction_rules\"
android:fullBackupContent=\"@xml/backup_rules\"
android:icon=\"@mipmap/ic_launcher\"
android:label=\"@string/app_name\"
android:roundIcon=\"@mipmap/ic_launcher_round\"
android:supportsRtl=\"true\"
android:theme=\"@style/Theme.NotePadReminder\"
tools:targetApi=\"31\">
<activity
android:name=\".MainActivity\"
android:exported=\"true\"
android:label=\"@string/app_name\"
android:theme=\"@style/Theme.NotePadReminder\">
<intent-filter>
<action android:name=\"android.intent.action.MAIN\" />
<category android:name=\"android.intent.category.LAUNCHER\" />
</intent-filter>
<meta-data
android:name=\"android.app.lib_name\"
android:value=\"\" />
</activity>
<receiver android:name=\"com.mobile.notepadreminder.AlarmReceiver\" />
</application>
</manifest>
这是我的 AlarmReceiver 类:
class AlarmReceiver: BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
Log.d(\"alarm\",\"received\")
}
}
我不知道为什么不起作用。 我的问题是我设置了闹钟并且闹钟永远不会运行。
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如它目前所写的那样,很难准确地说出你在问什么。
-
您使用哪个 android 版本进行测试,您的目标是哪个版本?
-
您正在使用
AlarmManager.ELAPSED_REALTIME,这是自使用System.currentTimeMillis()启动以来的时间,这实际上无法正常工作。你可能想要AlarmManager.RTC。