0

アプリがあり、時間の変化を検出することが重要です。アプリを閉鎖しても時間変更のブロードキャストを取得する方法

<receiver 
    android:name=".MyReceiver" 
    android:enabled="true" 
    android:exported="true"> 
    <intent-filter> 
    <action android:name="android.intent.action.TIME_SET" /> 
    <action android:name="android.intent.action.ACTION_TIME_CHANGED" /> 
    <action android:name="android.intent.action.DATE_CHANGED" /> 
    </intent-filter> 
</receiver> 

をし、これが私の受信機である:これまでのところ私はこのような適切なインテントフィルタと受信機を持っている

public class MyReceiver extends BroadcastReceiver { 
    public MyReceiver() { 
    } 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     SharedPreferences.Editor spe =PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext()).edit(); 
     spe.putLong("UFCount", 1)); 
     spe.putLong("FCount", 1)); 
     spe.commit(); 
     Toast.makeText(context.getApplicationContext(), "Your job is being done!!", Toast.LENGTH_LONG).show(); 
    } 
} 

アプリがイン・ザ・バックグラウンドオープン\である場合は、この受信機にのみ機能します。アプリが閉じてもこの受信機を動作させるにはどうすればいいですか?

+0

このリンクをチェックすることができます[http://stackoverflow.com/a/16824692/4049612](http://stackoverflow.com/a/16824692/4049612) – Krishna

+0

@Krishna私は常に稼働しているサービス。私はこれを行う最適な方法とは思わない – hadi

答えて

0

アプリケーションが閉じているため、Toastを表示するためのUI(つまり、アクティビティなし)はありません。この時点で、Logcatに例外があるはずです。 Log.d("MyReceiver", "in onCreate()");のように、トーストを表示する前にlogcatトレースを追加することもできます。アプリが終了しても表示されるはずです。

Toastを表示する代わりに、local notificationを送信することができます。これは、アプリからのアクティビティを必要としないため許可されています。

+0

私はログを使用しましたが、動作しません。私はログを検索したため、受信者がトリガーされなかったので表示されません – hadi

+0

Androidスタジオからlogcatを見ているなら、logcatフィルタを試して無効にしてもらえますか? ASは閉鎖されたアプリケーションからトレースを取得することが時々困難です – Lolo

+0

はい私もそれをしました。まだ何も表示されません。 'android.intent.action.TIME_SET'アクションに閉じたアプリケーションコンポーネントを開くフラグがあるのだろうか? – hadi

関連する問題