2016-10-30 4 views
0

1つの時刻にSMSを送信するSMSアプリケーションを作成しようとしています。このために、私は2つのサービスSendMessagePeriodicServiceとSendMessageServiceを作成しました。設定時間ではなく、サービスが実行されるたびにMy AlarmManagerがトリガーされます

これは私のSendMesagePeriodicServiceであり、設定された時刻にSendMessageServiceをトリガーするはずです。問題は、私はまた、sharedPreferencesの値が正しいことを確認しています...

誰が、なぜ、この任意のアイデアを持っています

public class SendMessagePeriodicService extends Service { 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { //FIXME 

    Calendar cal = Calendar.getInstance(); 

    Intent i = new Intent(this, SendMessageService.class); 
    PendingIntent pintent = PendingIntent.getService(this, 0, i, PendingIntent.FLAG_UPDATE_CURRENT); 


    cal.set(Calendar.MINUTE, PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("minute", -1)); 
    cal.set(Calendar.HOUR_OF_DAY, PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getInt("hour", -1)); 
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pintent); 

    return Service.START_NOT_STICKY; 
} 
} 

...それはonStartCommand・メソッドが呼び出されるたびにトリガしていることです起こっている?

答えて

0

これは、私がトリガ時間を設定した時間が過去であったことが原因だと思われます。これは、AlarmManagerがすぐにトリガし、次回この設定時間が発生しないことを意味します。

0

私は、アクティビティにalarmmanagerを設定し、アラームが発生したときにBroadcastReceiverを使用してSMSを送信することでこれを実行します。 同じテクニックを使用して、特定の時刻に通知を開始します。

あなたは最近、ファイル操作のためだけにサービスを使用していると思います。しかし、私は100%ではありません。

+0

それでも、AlarmManagerが機能しないのはなぜですか? – ssandoy

関連する問題