2

Я пытаюсь получить входящий номер входящего вызова. Я искал и нашел это Retrieve incoming call's phone number in Android. Моя проблема в том, что я не могу «входящего номера» в версии выше 4.0.3. Пожалуйста, направляйте меня, если я делаю что-то неправильно или как получить входящий номер в версии выше 4.0.3. Спасибо заранее. Вот код:Получить номер телефона входящего вызова во всех версиях Android

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

Создать приемник в манифесте:

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

I сталкиваться с тем же вопрос. Исправлено следующим кодом:

if (ActivityCompat.checkSelfPermission(this, 
    Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED) { 
    ActivityCompat.requestPermissions(this, new String[] 
    {Manifest.permission.READ_PHONE_STATE},3); 
} 
Смежные вопросы