2016-03-31 30 views
0

我使用onCreate()以下功能setAlarm()活動的註冊日常10:00 PM警報觸發的時間無關給出

報警(提醒),但每次活動開啓時,接收器AlarmReceiver被稱爲(在任何時候我打開活動)。

private static AlarmManager alarmMgr; 
private static PendingIntent alarmIntent; 


public static void setAlarm(Context context) { 
    alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(context, AlarmReceiver.class); 
    alarmIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.HOUR, 10); 
    calendar.set(Calendar.MINUTE, 0); 
    calendar.set(calendar.SECOND, 0); 
    calendar.set(calendar.MILLISECOND, 0); 
    calendar.set(Calendar.AM_PM, Calendar.PM); 
    millisecond = calendar.getTimeInMillis(); 


    alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, millisecond, AlarmManager.INTERVAL_DAY, alarmIntent); 
} 

清單文件

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.myexampleapp"> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 

    <uses-permission android:name="com.android.alarm.permission.SET_ALARM"/> 

    <application 
     android:name=".MyApplication" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver android:name="com.example.receiver.AlarmReceiver" /> 
     <service android:name="com.example.service.AlarmService" /> 
    </application> 
</manifest> 

回答

-1

你花了相當多的行建立適當的時候爲您的日曆變量。但是當你在你的alarmMgr上調用setInExactRepeating方法時,你告訴它在幾毫秒內觸發。

alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, millisecond, AlarmManager.INTERVAL_DAY, alarmIntent); 

而是要通過指定日曆變量轉換爲毫秒告訴setInExactRepeating方法在適當的時候火了:

alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, alarmIntent); 
+0

對不起,我聽不懂你說什麼,我也做上述代碼中的相同內容。其中,我已將calendar.getTimeInMillis()的值設置爲變量毫秒,並將其置於setInExactRepeating。就這樣。 –

+0

哦,我看到你已經保存將日曆放入毫秒變量中了。我的錯。 – joshgoldeneagle