2010-12-10 41 views
5

来源:无法从PhoneStateListener获得非空字符串:: onCallStateChanged

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许可,以获得包括开始通话的号码敬酒消息。我的问题是incomingNumber是空的,呼叫是传出还是传入并不重要,吐司显示,但是空的。
我已经看到了一些解决方案,但解决方案是以完全不同的方式获得数字,我想知道我的代码是否可以满足我的需求。
感谢您的建议,
亚当

+0

这个问题似乎是相似的,希望它可以帮助你:http://stackoverflow.com/questions/4534306/retrieve-the-call-number-in-my-android-app – 2011-01-21 05:06:54

+0

http:// stackoverflow。 COM /问题/ 4534306 /检索-的呼叫号码,在-MY-Android的应用程序/ 4534415#4534415 – medampudi 2011-11-02 12:13:50

回答

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

希望它能帮助你。