完成来自广播接收器的活动 [英] Finishing an Activity from a Broadcast Receiver

查看:28
本文介绍了完成来自广播接收器的活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个活动,当电话响起时(通过电话应用)显示为无模式.我想在发生以下任一事件时完成活动.第一个是如果我触摸 Activity 之外的任何地方(这不是问题),第二个是如果铃声停止.我正在广播接收器中侦听 IDLE_STATE,但我不确定如何在看到它时调用活动的完成.接收者不是由活动注册的,而是由 Manifest.xml

I have an Activity that I display as modeless when the phone rings (over the phone app). I would like to finish the Activity when either of the following events occur. The first is if I touch anywhere outside the Activity (this is not a problem), the second is if the ringing stops. I am listening for IDLE_STATE in the broadcast receiver but I am not sure on how to call the finish on the activity when I see it. The receiver is not registered by the activity but by the Manifest.xml

推荐答案

现在在您的接收广播中编写代码,这将发送另一个具有名为com.hello.action"的意图的广播

write the code in your receiving broadcast now this will send another broad cast with the intent named "com.hello.action"

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

现在在您想要完成的活动中捕获此意图,然后在接收器的 onReceive 方法上调用 super.finish()像这样

Now catch this intent in the activity with you want to finish it and then call the super.finish() on the onReceive method of your receiver like this

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();
};
}

这将完成活动

这篇关于完成来自广播接收器的活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆