0

次のコードを使用して、設計された時間の後に新しいインテントを呼び出すブロードキャストレシーバーを開始しましたが、問題はインテントが呼び出されていないことです。アラームは画面上のボタンによって呼び出され、指定された時間の後にボタンがクリックされると、新しいインテントが開始されることが期待されます。

private void alarm(){
            br = new BroadcastReceiver() {
        @Override
        public void onReceive(Context c, Intent i) {
            Toast.makeText(c, "Rise and Shine!", Toast.LENGTH_LONG).show();

        }
    };
    Log.v("ranjith","Inside setup");
    registerReceiver(br, new IntentFilter("com.example.ads.test"));
    pendingIntent = PendingIntent.getBroadcast( this, 0, new Intent(getApplicationContext(),test.class),0);
    alarmManager = (AlarmManager)(this.getSystemService( Context.ALARM_SERVICE ));
}
4

1 に答える 1

0

set()まず、 、setRepeating()、またはsetInexactRepeating()で を呼び出しAlarmManagerて、ブロードキャストを送信するイベントの発生をスケジュールしていません。

第二に、あなたPendingIntentは間違っています。以下を使用して、 と並べますIntentFilter

pendingIntent = PendingIntent.getBroadcast( this, 0, new Intent("com.example.ads.test"), 0);

第 3 に、動的に登録されたレシーバーを で使用するAlarmManagerことは、アプリケーションの実行中にのみアラームが有効になることを意味するため、かなり珍しいことです。

于 2013-09-17T16:28:24.557 に答える