问题描述
我试图整合以下到我的code注销phonestatelistener
TelephonyManager经理=(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
如果(经理!= NULL){
mgr.listen(phoneStateListener,PhoneStateListener.LISTEN_NONE);
}
我有在后台运行,并检查一个数字是阻止列表上的服务。如果是的话那么它会调用 PhonestateListener
TelephonyManager MTM =(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
mTM.listen(新phoneStateListener(NumberInbound,Msg_to_display,MTM),PhoneStateListener.LISTEN_CALL_STATE);
但是当我从阻止列表中删除了一些我想注销 phonestatelistner
。相反,什么情况是, phonestatelistener
总是被注册了MSISDN我previously删除仍然受阻!
你能帮忙吗?
$ C $下 phonestatelistner
类phoneStateListener扩展PhoneStateListener {
字符串inbounda;
INT MessagetoDisplay;
弦乐味精;
字符串的答复;
TelephonyManager MYT;
为MyService calltoService;
布尔mBound = FALSE;
私有静态最后字符串变量=PHONELISTENER;
phoneStateListener(串入,整型消息,TelephonyManager T){
inbounda =入境;
MessagetoDisplay =消息;
MYT = T;
}
公共无效onCallStateChanged(INT状态,串incomingNumber){
如果(!incomingNumber.equals(inbounda)){
} 其他 {
最终的字符串变量=电话呼叫;
ITelephony telephonyService;
//新的code
Log.v(手机状态,状态:+状态);
开关(州){
案例TelephonyManager.CALL_STATE_IDLE:
Log.v(手机状态,incomingNumber:+ incomingNumber +端);
打破;
案例TelephonyManager.CALL_STATE_OFFHOOK:
Log.v(手机状态,incomingNumber:+ incomingNumber +捡到);
打破;
案例TelephonyManager.CALL_STATE_RINGING:
如果(inbounda.equalsIgnoreCase(incomingNumber)){
Log.v(是相同的...............................,incomingNumber:+ incomingNumber +入站: + inbounda +味精,显示+味精);
尝试{
C类=的Class.forName(myt.getClass()的getName());
方法米= c.getDeclaredMethod(getITelephony);
m.setAccessible(真正的);
telephonyService =(ITelephony)m.invoke(MYT);
telephonyService.silenceRinger();
telephonyService.endCall();
}赶上(例外五){
e.printStackTrace();
}
尝试{
Thread.currentThread()睡眠(4000)。
replyChecker(MessagetoDisplay);
}赶上(InterruptedException的IE){
}
}
打破;
默认:
打破;
}
}
}
公共字符串replyChecker(INT检查){
SmsManager的mySMS = SmsManager.getDefault();
字符串目标= inbounda;
//开 - 被扩展,以允许用户能够定义自己的定制消息
字符串会议=对不起,我是在一次会议格雷厄姆。
字符串健身房=我目前在健身房,并会回应你以后格雷厄姆。
字符串NewYearsEve =新年快乐你和你所爱的人格雷厄姆。
如果(检查== 1){
Log.v(这里NOW1,:);
回复=会议;
mySMS.sendTextMessage(目的地,空,会议,NULL,NULL);
返回答复;
}否则,如果(检查== 2){
Log.v(这里NOW2,:);
回复=健身房;
mySMS.sendTextMessage(目的地,空,健身房,NULL,NULL);
返回答复;
}否则,如果(检查== 3){
Log.v(这里NOW3,:);
回复= NewYearsEve;
mySMS.sendTextMessage(目的地,空,NewYearsEve,NULL,NULL);
返回答复;
}
// TODO自动生成方法存根
返回答复;
}
}
解决方案