6

来源:

listener = new PhoneStateListener()
    {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            super.onCallStateChanged(state, incomingNumber);
            Toast toast = Toast.makeText(getApplicationContext(), incomingNumber, Toast.LENGTH_LONG);
            toast.show();
        }

    };

    ((TelephonyManager)getSystemService(TELEPHONY_SERVICE)).listen(listener , PhoneStateListener.LISTEN_CALL_STATE )

嗨,
我在android.permission.READ_PHONE_STATE获得许可的情况下使用此代码来获取包括已启动呼叫数在内的 toast 消息。我的问题是incomingNumber 是空的,不管是呼出还是呼入,toast 都会出现,但是是空的。
我已经看到了一些解决方案,但解决方案是以完全不同的方式获取数字,我想知道我的代码是否可以满足我的需求。
谢谢你的建议,
亚当

4

1 回答 1

2

请在您的申请中包含许可。

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


if(state == TelephonyManager.CALL_STATE_RINGING){
Toast toast = Toast.makeText(getApplicationContext(), incomingNumber, Toast.LENGTH_LONG);
toast.show();
}

CALL_STATE_OFFHOOK如果是第一次调用,则返回 null。所以你应该使用CALL_STATE_RINGING.

希望它会帮助你。

于 2011-11-04T10:39:01.823 回答