无法从PhoneStateListener :: onCallStateChanged获取非空字符串

时间:2010-12-10 18:49:13

标签: android telephonymanager

来源:

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是空的,如果呼叫是传出或进入,吐司出现,但空是无关紧要。
我已经看到了一些解决方案,但解决方案是以完全不同的方式获取数字,我想知道我的代码是否可以满足我的需求。
谢谢你的建议,
亚当

1 个答案:

答案 0 :(得分: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

希望它会对你有帮助。