2016-05-17 15 views
0

私は、毎日の午前8時30分にで通知を送信して、その日にイベントがあるかどうかを確認します。毎日特定の時間にサービス/アラームを起動するようにアプリを設定するにはどうすればよいですか?

通知が送信される日付を格納するSQLlite DBがあります。私のアプリから欲しいのは、これは、毎朝8時に、今日のイベントがあるかどうかをチェックする必要があります。その日のイベントがある場合は、通知を送信します。

私は既にDBと通知で部品を実装しています。毎日午前8時にアプリがDBをチェックする部分を実装するだけです。

**更新:**現在の時刻が8:00かどうかを確認するサービスを作成しました。以下はそのサービスのコードです。

public int onStartCommand(Intent intent, int flags, int startId) { 
    // TODO Auto-generated method stub 

    System.out.println("inside on start command for service"); 

    myPrefs = this.getSharedPreferences("settings", this.MODE_PRIVATE); 

    checkTime(); 

    return START_STICKY; 
} 

// to check if the time for alarm is here 
private void checkTime() { 
    // TODO Auto-generated method stub 
    try{ 
    System.out.println("inside check time"); 

    Calendar cal; 
    cal = Calendar.getInstance(); 

    if (08 == cal.get(cal.HOUR_OF_DAY) && 00 == cal.get(cal.MINUTE)) { 
     // to call db and check for events 
     nm = new MyNotificationManager(this); 
     if (nm.checkEvent()) { 
      nm.setNotifications(); 
     } 
    } 
    }catch(Exception e){ 
     System.out.println("inside exception for check time "+e.toString()); 
    } 
} 

問題はサービスが時間を1回だけチェックしていることです。それは毎分の時間をチェックする方法は? 誰も助けてくれますか?

+0

私も同じ問題に直面しています。 https://stackoverflow.com/questions/47324975/alarm-everyday-at-5am-morning-android あなたのソリューションを私と共有できますか? – XoXo

答えて

2

利用保留テント

保留中の意図は、あなたが他のアプリケーションに与えるトークンである(例えば、通知マネージャー、アラームマネージャまたは他のサードパーティアプリケーション)アプリケーションの権限を使用するには、この他のアプリケーションを可能にします、定義済みのコードを実行します。

保留中のインテントでブロードキャストを実行するには、PendingIntentクラスのgetBroadcast()メソッドを使用してPendingIntentを取得します。保留中のインテントを通じてアクティビティを実行するには、PendingIntent.getActivity()を介してアクティビティを受け取ります。

それとも

PendingIntent +アラームマネージャ+ブロードキャストレシーバの組み合わせは、あなたが登録し、マニフェストで動的にunregistere放送受信機ではないする必要が正常に動作することができます。同様に

public void onResume() 
    { 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction("android.provider.Telephony.SMS_RECEIVED"); 
    registerReceiver(mybroadcast, filter); 

    } 

    public void onPause() 
    { 
    unregisterReceiver(mybroadcast); 
    } 
+0

私はこのコードをどこに実装すべきですか?私のアプリケーションのどのクラスですか? – Aradhna

+0

@aradhnaが自動的にアラームを再生するには、サービスクラスを作成する必要があります。保留中のインテントをコードする必要があります。アプリをインストールすると、アプリは閉じられたままでバックグラウンドに残り、サービス内のコードが実行されます自動的に –

+0

@aradhnaの8時には、サービスクラス内のアラームマネージャーのコードを作成するだけで、そのサービスクラスをsplash screen.javaまたは最初のアクティビティから呼び出すことができます。 –

関連する問題