完成来自广播接收器的活动 [英] Finishing an Activity from a Broadcast Receiver
问题描述
我有一个活动,当电话响起时(通过电话应用)显示为无模式.我想在发生以下任一事件时完成活动.第一个是如果我触摸 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屋!