我是android开发的新手。所以我需要帮助。
我想在电话状态响铃时显示一个活动,并在状态空闲或摘机时终止此活动。
所以我建立了一个类扩展广播接收器。我称 myphonestatelistener 类扩展了 PhoneStateListener 。我还创建了一个名为 ringingactivity 的活动。
这是我的代码(MyPhoneStateListener):
public void onCallStateChanged(int state,String incomingNumber){
switch(state)
{
case TelephonyManager.CALL_STATE_IDLE:
Log.d("DEBUG", "IDLE");
Intent killIntentidle = new Intent();
killIntentidle.setAction("RingingOver") ;
ctx.sendBroadcast(killIntentidle);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.d("DEBUG", "OFFHOOK");
Intent killIntent = new Intent();
killIntent.setAction("RingingOver") ;
ctx.sendBroadcast(killIntent);
break;
case TelephonyManager.CALL_STATE_RINGING:
Log.d("DEBUG", "RINGING");
Intent dialogIntent = new Intent(ctx , RingingActivity.class) ;
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(dialogIntent);
break;
}
}
在我的测试中,我从 telnet 调用模拟器,它在响铃时成功显示活动。当我接受或拒绝来电时,活动结束。但是当我再次调用模拟器时,无法再次重新创建活动。我在屏幕上看不到它。我究竟做错了什么?
这是我的活动代码:
公共类 RingingActivity 扩展 Activity {
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.ringing_activity);
IntentFilter filter = new IntentFilter();
filter.addAction("RingingOver");
registerReceiver(receiver, filter);
//registerReceiver(receiver,filter) ;
}
public void finish() {
super.finish();
};
}
谢谢你的帮助!