2011-09-27 196 views
7

我有一个活动,当手机响起时(通过电话应用程序),我显示为非模态。当发生以下任一事件时,我想完成活动。第一个是如果我触摸活动外的任何地方(这不是问题),第二个是如果振铃停止。我正在收听广播接收机中的IDLE_STATE,但我不确定如何在看到它时调用活动的结束。接收器未通过活动注册,但通过Manifest.xml注册从广播接收器完成活动

回答

0

如果从活动注册另一个广播接收器,该怎么办?然后,当你想杀死它时,从你提到的广播接收器发送广播消息。

0

我实际上最终在活动中添加了一个PhoneStateListener来监听IDLE_STATE。

12

把代码写在你的接收广播现在这将发送一个名为“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(); 
}; 
} 

这将完成活动