簡體   English   中英

AlarmManager BroadcastReceiver,onReceive從未調用過

[英]AlarmManager BroadcastReceiver, onReceive never called

我正在制作一個鬧鍾應用程序,我想測試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"); 

        }
    }

嘗試更改警報的第一個參數。 設置方法和/或使用日歷日期設置:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM