这段代码为什么不能挂电话?

wenjunsu 2011-12-11 10:43:28
我参照网上给的方法,做一个来电防火墙。
原理:通过反射利用广播的形式拦截黑名单里的电话,在2.2的模拟器上跑完全可以,但是为什么在小米上不行呢?拦截部分代码如下:

#Code

package junsu.wen.PhoneWallPack;
import java.lang.reflect.Method;
import junsu.wen.BussinessLogic.PhoneWallManager;
import com.android.internal.telephony.ITelephony;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.AudioManager;
import android.telephony.TelephonyManager;
public class Phonemanager extends BroadcastReceiver {

private AudioManager mAudioManager;
private ITelephony mITelephony;
//来电防火墙 SQLite数据库存储
private PhoneWallManager pwm=null;

@Override
public void onReceive(Context context, Intent intent) {
//初始化数据
Phone(context);
String action = intent.getAction();
//如果广播是关于电话号状态的
if ("android.intent.action.PHONE_STATE".equals(action)) {
//获取来电状态
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
//获取来电号码
String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
// 电话正在响铃
if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING)) {
// 拦截指定的电话号码
if (pwm.Exist(number)==true) {
// 先静音处理
mAudioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
try {
// 挂断电话
mITelephony.endCall();
} catch (Exception e) {
e.printStackTrace();
}
// 再恢复正常铃声
mAudioManager
.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}
}
}
}

private void Phone(Context context)
{
pwm=new PhoneWallManager(context);
//利用反射获取隐藏的endcall方法
TelephonyManager mTelephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
mAudioManager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
try {
Method getITelephonyMethod = TelephonyManager. class .getDeclaredMethod( "getITelephony" , (Class[]) null );
getITelephonyMethod.setAccessible( true );
mITelephony = (ITelephony) getITelephonyMethod.invoke(mTelephonyManager, (Object[]) null );
} catch (Exception e) {
e.printStackTrace();
}

}
}

#EndCode

猜测:1.小米隐藏了此API,反射不成功
2.以上代码所使用API已过时
这个问题昨晚困扰了我很久,能请官方的亲给一个答复吗??
...全文
147 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
King_at_csdn 2011-12-12
  • 打赏
  • 举报
回复
小米是android2.3,正在弄2.4~ 你试试在2.3的模拟器上能不能跑~
ibb-yes 2011-12-12
  • 打赏
  • 举报
回复
再用其它 真机 调试下 貌似和小米本身有很大关系
guonanyun 2011-12-11
  • 打赏
  • 举报
回复
小米手机的android版本是多少啊?我感觉是相关api已过时

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧