Завершение действия от приемника вещания - PullRequest
8 голосов
/ 27 сентября 2011

У меня есть активность, которая отображается как немодальная, когда звонит телефон (через приложение телефона). Я хотел бы завершить задание, когда произойдет одно из следующих событий. Во-первых, если я коснусь где-нибудь за пределами действия (это не проблема), во-вторых, если звонок прекратится. Я слушаю IDLE_STATE в приемнике вещания, но не уверен, как вызвать финиш на активности, когда увижу ее. Получатель зарегистрирован не по активности, а по Manifest.xml

Ответы [ 5 ]

15 голосов
/ 23 февраля 2012

напишите код в принимающей трансляции, теперь это отправит еще одну трансляцию с намерением с именем "com.hello.action"

Intent local = new Intent();
local.setAction("com.hello.action");
sendBroadcast(local);

Теперь поймайте это намерение в упражнении, которое вы хотите завершить, и затем вызовите super.finish () для метода onReceive вашего получателя. как это

public class fileNamefilter extends Activity {
ArrayAdapter<String> adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    IntentFilter filter = new IntentFilter();

    filter.addAction("com.hello.action");
    registerReceiver(receiver, filter);

    }
BroadcastReceiver receiver = new BroadcastReceiver() {

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

    }
};

public void finish() {
    super.finish();
};
}

это завершит действие

0 голосов
/ 05 декабря 2018

Я использовал этот код для решения своей проблемы.finish - это метод Activity, поэтому вызывайте Activity и такой контекст:

if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
     Log.e(TAG, "Inside EXTRA_STATE_IDLE");
     ((Activity) arg0).finish();
}
0 голосов
/ 21 августа 2018

После долгих исследований и разработок через Интернет я решил свою проблему.Приведенный ниже код полезен, если вы запускаете действие из приемника вещания и очищаете все экземпляры стека активности.

 @Override
    public void onBackPressed() {
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            moveTaskToBack(true);
        }
    }
0 голосов
/ 27 сентября 2011

Я фактически закончил тем, что добавил PhoneStateListener в Activity для прослушивания IDLE_STATE.

0 голосов
/ 27 сентября 2011

Что если вы зарегистрируете другого получателя вещания из действия.Затем, когда вы хотите убить его, отправьте широковещательное сообщение с упомянутого вами получателя широковещания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...