2016-10-04 25 views
-2

毎日アラームを設定しています。アプリがアラーム時に実行されている場合は機能しますが、アプリが実行されていない場合は機能しません。 これは私がマニフェストに受信機を宣言する方法です:アプリが実行されていないときにアラームが発生しない

<receiver android:name="com.myAppPackage.alarm.AlarmReceiver" 
     android:enabled="true" 
     android:exported="true"/> 

Studioは私を警告します:エクスポートされた受信機は、許可を必要としません。

真の私はアンドロイド追加していない:受信機への許可もと意図をしてアプリケーションセクションでは、任意の許可タグはありません。

これはbroadcastreceiverある:

package com.myAppPackage.alarm; 

    import android.content.BroadcastReceiver; 
    import android.content.Context; 
    import android.content.Intent; 

    import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK; 

    public class AlarmReceiver extends BroadcastReceiver { 

    public AlarmReceiver(){} 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     final Intent syncIntent = new Intent(context, AlarmActivity.class); 

     syncIntent.addFlags(FLAG_ACTIVITY_NEW_TASK); 

     context.startActivity(syncIntent); 

    } 
} 

アラームは、以下の方法(この例ではセットオフに毎日午後01時48分不正確で構成)で構成されている:

public static void configureDailySync(Context context) { 

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

    Intent alarmIntent = new Intent(context, AlarmReceiver.class); 

    PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, 0); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 

    final int hourOfDay = 13; 
    final int minuteOfHour = 48; 

    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
    calendar.set(Calendar.MINUTE, minuteOfHour); 

    alarmManager.setInexactRepeating(
      AlarmManager.RTC_WAKEUP, 
      calendar.getTimeInMillis(), 
      AlarmManager.INTERVAL_DAY, 
      alarmPendingIntent); 
} 

任意助けが大歓迎です!ありがとうございました!!

ニュース:MainActivity onCreate()メソッドでアラーム設定コードをコピーすると機能します。 ...

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

    Intent alarmIntent = new Intent(this, AlarmReceiver.class); 

    PendingIntent alarmPendingIntent = PendingIntent.getBroadcast(this, 0, alarmIntent, 0); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 

    final int hourOfDay = 13; 
    final int minuteOfHour = 48; 

    calendar.set(Calendar.HOUR_OF_DAY, hourOfDay); 
    calendar.set(Calendar.MINUTE, minuteOfHour); 

    alarmManager.setInexactRepeating(
      AlarmManager.RTC_WAKEUP, 
      calendar.getTimeInMillis(), 
      AlarmManager.INTERVAL_DAY, 
      alarmPendingIntent); 

アラームがMainActivityののonCreate()で上記のように作成された場合、アプリケーションが閉じている場合でも、それが引き金ん しかし、私は電話を呼び出すとき:これは私がコピーしたコードですメソッドをMainActivityから次のように入力します。

MyAppAccount.configureDailySync(this); 

これは機能しません! MyAppAccountは何も拡張していないプレーンなクラスです...私は、MyAppAccountが重要な場合に備えてAppCompatActivityを拡張しようとしましたが、何も... まあ...それは上記のアラーム設定をMainActivityのonCreate()メソッドが常に動作しているわけではありません...最も困惑しているのは何ですか? :-(

+0

は、あなたがしようとしましたアプリケーションクラスにconfigureDailySync()を配置するとどうなりますか? –

答えて

1

解決済み:問題は、私がアプリケーションを閉じていたことでした。Android Studioの停止ボタンを使用してアプリケーションを終了すると、アラームは設定されません。携帯電話から、インスタンスおよび/または(四角ボタン付き)アプリケーションのリストからアプリケーションを削除するための戻るボタンを使用して、アラームが動作します!

をなぜ?いいえアイデア...

+0

5時間の検索THX MAN –

関連する問題