2

着信コールの着信番号を取得しようとしています。Android で着信の電話番号を取得するを検索して見つけまし た。私の問題は、4.0.3 より上のバージョンで「着信番号」を取得できないことです。何か間違ったことをしている場合、またはバージョン 4.0.3 で着信番号を取得する方法を教えてください。前もって感謝します。コードは次のとおりです。

TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
telephony.listen(new PhoneStateListener(){
   public void onCallStateChanged(int state, String incomingNumber) {
       super.onCallStateChanged(state, incomingNumber);
          switch (state) {
              // not getting incoming number in latest version of android
              Log.e(Utils.TAG, "incomingNumber: "+incomingNumber);
          }
    }
},PhoneStateListener.LISTEN_CALL_STATE);
4

2 に答える 2

3

マニフェストにレシーバーを作成します。

<receiver android:name=".PhoneState">  
    <intent-filter>
         <action android:name="android.intent.action.PHONE_STATE"/> 
    </intent-filter>
</receiver>

この許可を追加します。

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

ブロードキャスト レシーバーを作成します。

public class PhoneState extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        TelephonyManager tm = (TelephonyManager)context.getSystemService(Service.TELEPHONY_SERVICE); 

        switch (tm.getCallState()) {

            case TelephonyManager.CALL_STATE_RINGING:
                    String phoneNr= intent.getStringExtra("incoming_number");
                    Toast.makeText(context, phoneNr,Toast.LENGTH_LONG).show();
                    break;
        } 
    }
}
于 2013-11-15T16:42:55.217 に答える