gpt4 book ai didi

android - 无法获取 TelephonyManager.CALL_STATE_RINGING

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:01:43 27 4
gpt4 key购买 nike

我添加了这是我的 list 文件 -

        <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>

那我的服务类是这样的——

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 是 -

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

我能够看到 IDLE 状态。

但是当我打电话时,我没有得到振铃状态。为什么?

最佳答案

我认为您混淆了两种获取电话状态的方法。如果您使用 intent-filter 和广播接收器,则在接收器中无需调用 TelephonyManager 的 listen()。只需像这样检查收到的 Intent :

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

关于android - 无法获取 TelephonyManager.CALL_STATE_RINGING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036295/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com