小编Kev*_*uan的帖子

Android 9.0 中 PhoneStateListener onCallStateChanged 方法参数“来电号码”为空?

@Override
public void onCallStateChanged(int state, String incomingNumber) {
    super.onCallStateChanged(state, incomingNumber);
    switch (state) {
        case TelephonyManager.CALL_STATE_RINGING:
            if (incomingNumber == null || "".equals(incomingNumber)) {
                return;
            }
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在 Android sdk27 下面遇到了同样的问题,我在 PhoneService 中启动 PhoneStateListener ,

public  void startPhoneStateListener() {
    mTelManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
    mTelManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
Run Code Online (Sandbox Code Playgroud)

但我只在 RootReceiver 中启动服务,而不是在 MainActivity 中启动服务,当我在 MainActivity 中启动 PhoneService 时,我修复了它。

  <receiver android:name=".receiver.RootReceiver">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
        </intent-filter>
    </receiver>
Run Code Online (Sandbox Code Playgroud)

但这只能在Android sdk 27​​以下工作,我不知道Android 9.0,顺便说一句,我已经写了权限:

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)

android phone-state-listener

4
推荐指数
1
解决办法
4433
查看次数

标签 统计

android ×1

phone-state-listener ×1