我已经在模拟器上测试了我的接收器并模拟了对模拟器的面部调用,并且可以记录手机状态甚至获取主叫号码, 但是,如果我在真实设备上尝试这个,它就无法正常工作。我添加了一个活动,如果它工作背景,它的工作原理。但我为什么要加它?为什么活动必须在后台运行?
@Override
public void onReceive(Context cnx, Intent nt) {
Bundle bnd = nt.getExtras();
Log.e("EXTRA", "EXTRA");
if (bnd != null) {
String state = bnd.getString(TelephonyManager.EXTRA_STATE);
Log.i("PHONE STATE", state);
if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
Log.i("PHONE STATE",
bnd.getString(TelephonyManager.EXTRA_INCOMING_NUMBER));
}
}
答案 0 :(得分:0)
活动意味着在Foreground中运行,如果要在后台运行流程,则应使用服务。 read here more
对于你的问题,你应该有单独的接收器类,在Manifest文件中注册接收器以进行电话状态更改操作并具有读取电话状态的权限。