我正在制作一个闹钟应用程序,我想测试 AlarmManager 类来安排一个事件让我在应用程序关闭时执行,而不是常规操作系统警报我自己的自定义警报,这就是我不使用 AlarmClock 类的原因。由于某种原因,我的类中扩展 BroadcastReceiver 的 OnReceive() 方法永远不会被调用?我希望你们能帮忙。另外,如果有更好的技术来实现预定的中断,我很高兴知道,就像您的输入一样。另请注意,我尝试过像这样放置接收者标签
<receiver android:name=".MyReciever"></receiver>
在我的 list 中的应用程序标签之间,但我得到了相同的结果,我也知道我在类定义中拼写错误了 Reciever,但我在整个项目中保持一致。
这是我的 maifest 文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Alarm_clock_app.Alarm_clock_app" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">
<uses-sdk android:minSdkVersion="16" />
<application android:label="Alarm_clock_app">
<activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent" />
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.VIBRATE" />
</manifest>
这是我在 onCreate() 内的主 Activity 中调用的方法,该方法位于我的主 Activity 类内
public void sched()
{
Intent intent = new Intent(this,typeof(MyReciever));//create an intent with our custom broadcast reciever
PendingIntent pIntent = PendingIntent.GetService(this,0,intent,PendingIntentFlags.UpdateCurrent);//get a pending intent made from our intent
AlarmManager alarM = (AlarmManager) GetSystemService(AlarmService);//get alarm manager
alarM.Set(AlarmType.RtcWakeup, DateTime.Now.Millisecond + 5 * 1000, pIntent);//schedule the alarm for 5,000 ms from now
}
这是我扩展广播接收器的类
[BroadcastReceiver(Enabled = true, Process = ":remote")]
class MyReciever: BroadcastReceiver
{
public override void OnReceive(Context context, Intent intent)
{
Console.WriteLine("alarm has occuered");
}
}
尝试更改警报的第一个参数。设置方法和/或使用日历日期设置:
{Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, 5);
alarM.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pIntent);}
我是一名优秀的程序员,十分优秀!