首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获取TelephonyManager.CALL_STATE_RINGING

无法获取TelephonyManager.CALL_STATE_RINGING
EN

Stack Overflow用户
提问于 2011-05-18 03:51:10
回答 1查看 9.1K关注 0票数 10

我补充说这是我的清单文件-

代码语言:javascript
复制
        <receiver android:name=".ServiceReceiver">
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>
</application>

<uses-permission android:name="android.permission.READ_PHONE_STATE">
</uses-permission>

那么我的服务类是这样的-

代码语言:javascript
复制
public class ServiceReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    MyPhoneStateListener phoneListener = new MyPhoneStateListener();
    TelephonyManager telephony = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);
    telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}

}

我的PhoneStateListener是-

代码语言:javascript
复制
public class MyPhoneStateListener extends PhoneStateListener {

public void onCallStateChanged(int state, String incomingNumber) {
    Log.i("telephony-example", "State changed: " + stateName(state));
}

String stateName(int state) {
    switch (state) {
    case TelephonyManager.CALL_STATE_IDLE:
        Log.d("DEBUG", "***********IDLE********");
        return "Idle";
    case TelephonyManager.CALL_STATE_OFFHOOK:
        Log.d("DEBUG", "***********OFFHOOK********");
        return "Off hook";
    case TelephonyManager.CALL_STATE_RINGING:
        Log.d("DEBUG", "***********RINGING********");
        return "Ringing";
    }
    return Integer.toString(state);
}

}

我可以看到空闲状态。

但是当我呼叫时,我没有得到振铃状态。为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-18 04:14:44

我认为你混淆了两种获取电话状态的方法。如果您使用intent-filter和广播接收器,那么在接收器中不需要调用TelephonyManager的listen()。只需检查接收到的意图,如下所示:

代码语言:javascript
复制
public void onReceive(Context context, Intent intent) {
    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
    String number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
    if (TelephonyManager.EXTRA_STATE_RINGING.equals(state))
    {
        Log.d("MPR", "Its Ringing [" + number + "]");
    }
    if (TelephonyManager.EXTRA_STATE_IDLE.equals(state))
    {
        Log.d("MPR", "Its Idle");
    }
    if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state))
    {
        Log.d("MPR", "Its OffHook");
    }
}
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6036295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档