AlarmManager BroadcastReceiver,onReceive从未调用过

时间:2016-05-12 06:08:16

标签: java c# android xamarin.android alarmmanager

我正在制作一个闹钟应用程序,我想测试AlarmManager类来安排一个事件让我在应用程序关闭时执行而不是常规操作系统警报我自己的自定义警报,这就是为什么我没有使用AlarmClock类。由于某种原因,在我的类中扩展BroadcastReceiver的OnReceive()方法永远不会被调用?我希望你们能帮忙。此外,如果有一个更好的tecnique来实现预定的中断,我很高兴知道,id就像你输入。还要注意我已经尝试过像这样放置接收器标签

<receiver android:name=".MyReciever"></receiver>  

在我的清单中的应用程序标签之间,但我得到相同的结果,我知道我在我的班级定义中误导了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()里面的主要活动中调用的方法,这个方法在我的主要活动类中

 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"); 

        }
    }

1 个答案:

答案 0 :(得分:0)

尝试更改闹钟的第一个参数。设定方法 和/或使用日历日期设置:

{Calendar cal = Calendar.getInstance();
 cal.add(Calendar.SECOND, 5);
 alarM.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pIntent);}