2010-12-10 8 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 –

+0

http:// stackoverflow。 com/questions/4534306 /私のアンドロイドアプリ内検索番号/ 4534415#4534415 – medampudi

答えて

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を使用してください。

うまくいけば助けてください。

関連する問題