2013-09-05 11 views
7

指定した時刻にアラームを設定しようとしていますが、受信者にキャッチされていません。AndroidアラームマネージャsetRepeatingがトリガーしない

セットアップ:私は私のマニフェストにこれらの値を入れている

public class ActionReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
    Bundle bundle = intent.getExtras(); //breakpoint here that doesn't get triggered 
    } 
} 

:ここ

Intent intent = new Intent(this, ActionReceiver.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT); 

Calendar current = Calendar.getInstance(); 
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, (current.getTimeInMillis() + 60000),3600000, pendingIntent); 

は私reciverある

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<receiver android:name="com.project.ActionReceiver" android:enabled="true" /> 

間違っているのかわからない...ありがとう!マニフェストで

+0

受信機がWilliam.That works.ThoughのAndroidManifest.xmlがあることを警告 'ActionReceiver' – kabuto178

答えて

1

受信機の名前のような、クラス名でなければなりません:

<receiver android:name="com.project.ActionReceiver"> 

ところで、アクションがより良い練習で設定します。

Intent intent = new Intent(this, ActionReceiver.class); 
intent.setAction("com.project.action.ALERM"); 

とマニフェスト

<receiver android:name="com.project.ActionReceiver"> 
    <intent-filter> 
     <action android:name="com.project.action.ALERM"/> 
    </intent-filter> 
</receiver> 
+0

感謝すべきではありません:'エクスポート受信者は許可を必要としません。 ' – Anirudha

0

あなたActionReceiverの完全修飾クラス名にごreceiverandroid:name属性を変更してみてください。次のようなもの:

<receiver android:name="com.project.ActionReceiver" android:enabled="true" /> 
+0

変更されました。しかし、それでもレシーバーは作動しません。 –

4

最後に受信機が発射されました。私は私のマニフェストに次のコードを追加しました:

詳細はこちらをご覧
<receiver 
     android:name="com.project.ActionReceiver" 
     android:exported="true" > 
     <intent-filter> 
      <action android:name="com.project.ActionSetter" > 
      </action> 
     </intent-filter> 
    </receiver> 

https://stackoverflow.com/a/16119351/1174574

+0

'android:exported =" true "'または ''が必要です。両方ではありません。あなたはどちらも持っていなかったので、それが働いていなかったのです。 ' 'は、あなたのアプリの外のアプリ(例えば、' AlarmManager')で利用できる必要があります。これを行うには、 'android:exported =" true "'を設定するか、 ''を追加します。 ''を追加した場合、 ''をエクスポートしなければならないという前提があるので、 ''の存在下で 'export'のデフォルト値は' true'に設定されます。 。 –

関連する問題