2

들어오는 전화 번호를 가져 오려고합니다. 수색하고 발견했습니다 Retrieve incoming call's phone number in 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); 
+0

해결 했습니까? –

답변

4

가 매니페스트에 수신기를 만들기 :

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; 
     } 
    } 
} 
0

I :

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

은 방송 수신기를 만들 :

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

이 권한을 추가 여기 코드입니다 같은 일을하다 문제. 다음 코드로 수정 :

if (ActivityCompat.checkSelfPermission(this, 
    Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(this, new String[] 
    {Manifest.permission.READ_PHONE_STATE},3); 
} 
관련 문제