2016-05-12 60 views
1

我是新來android編程和我搜索了許多這個相同的問題的例子,但無法找到解決方案。我正在製作一個鬧鐘應用程序,我想測試AlarmManager Class來安排一個事件,讓我在應用程序關閉時執行一個事件,而不是正常的操作系統鬧鐘我自己的自定義鬧鐘,這就是爲什麼我不使用AlarmClock類。由於某種原因,我的類中擴展BroadcastReciever的OnRecieve()方法永遠不會被調用?我希望你們能幫忙。此外,如果有更好的技術來實現預定的插入,我會很高興知道,像你一樣輸入id。還要注意我試圖把reciever標籤這樣AlarmManager BroadcastReciever,onRecieve從未呼籲

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

     } 
    } 
+0

您使用的是'PendingIntent.GetService()'方法,它是用來啓動一個'Service'。如果您想要廣播到「BroadcastReceiver」,請改用PendingIntent.GetBroadcast()方法。 (順便說一句,如果你編輯你的問題,它會碰到活動隊列的頂部,你不需要爲同樣的事情發佈另一個問題,尤其是沒有鏈接到前一個問題的問題。) –

+0

謝謝,但這個沒有解決問題 – calcMan

+0

好的,當你編輯你的問題時,確保它是值得的。不要只是改變一個字母,讓它碰撞。將代碼更新爲當前正在運行的內容,添加您正在觀察的任何新行爲,鏈接到您嘗試實現的任何其他帖子或示例等等。如果編輯至少修復了您的語法,標點符號和拼寫它再次。 –

回答

0

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

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