0

アクティビティを開始および停止する必要があるアプリケーションがあります。

これまでのところ、アクティビティを開始しても問題ありません。

アクティビティを停止しようとすると問題が発生します。

これは、アクティビティを閉じるインテントをブロードキャストする AlarmManager です。

        Intent ftue = new Intent(ctxt, VideoActivty.class);
        ftue.putExtra("finish", true);
        PendingIntent pftue = PendingIntent.getBroadcast(ctxt, 0, ftue, 0);
        Calendar calSet4 = Calendar.getInstance();
        calSet4.set(Calendar.MONTH, c.get(Calendar.MONTH));
        calSet4.set(Calendar.YEAR, c.get(Calendar.YEAR));
        calSet4.set(Calendar.DAY_OF_WEEK, 3);
        calSet4.set(Calendar.HOUR_OF_DAY, hftue);
        calSet4.set(Calendar.MINUTE, mftue);
        calSet4.set(Calendar.SECOND, 0);
        calSet4.set(Calendar.MILLISECOND, 0);

        //calSet.setTimeZone(TimeZone.getTimeZone("UTC"));
        mgr.setRepeating(AlarmManager.RTC_WAKEUP, calSet4.getTimeInMillis(),
                7 * 24 * 60 * 60 * 1000, pftue);

私のActivtyでは、ActivtyをシャットダウンするBroadcastReceiverを実装しました。

しかし、成功せずに...

@Override
public void onResume() {
super.onResume();
IntentFilter f=new IntentFilter();
registerReceiver(receiver, f);
}


@Override
public void onPause() {
unregisterReceiver(receiver);
super.onPause();
}

BroadcastReceiver receiver=new BroadcastReceiver() {
    public void onReceive(Context context, Intent intent) {
        Log.e("","intento ricevuto");
        if(intent.getBooleanExtra("finish",false))finish();

    }
};
4

1 に答える 1

1

私のコメントを答えにして、それについて説明させてください。

空の を使用するIntentFilterと、アクティビティはそれにブロードキャストされたインテントを受信しません。ただし、ブロードキャスト インテントが BroadcastReceiver のタイプを特別に参照する場合、それは機能します。

したがって、MyReceiver extends BroadcastReceiver内部でクラスを定義しVideoActivity、ブロードキャスト インテントを形成すると、それnew Intent(context, VideoActivity.MyReceiver.class)配信されます。

それが理にかなっていることを願っています。

于 2013-07-17T16:15:31.837 に答える