0

我已经在模拟器上测试了我的接收器并模拟了对模拟器的面部呼叫,并且可以记录电话状态甚至获取呼叫号码,但是如果我在真实设备上尝试这个,它就不起作用。我添加了一个活动,如果它在后台工作,它就可以工作。但我为什么要添加它?为什么必须在后台运行活动?

@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));
        }

    }
4

1 回答 1

0

活动应该在前台运行,如果你想在后台运行你的进程,你应该使用服务。 在这里阅读更多

对于您的问题,您应该有单独的接收器类,在清单文件中注册接收器以进行电话状态更改操作并有权读取电话状态。

于 2012-07-15T07:03:28.223 回答