Сбой приложения при завершении голосового вызова - PullRequest
0 голосов
/ 24 октября 2019

Когда звонит телефон, я сравниваю номер телефона с номерами в базе данных моего сервера и записываю имя звонящего. Думай как приложение Callerid.

Я делаю то, что хочу, когда звонит телефон. Тем не менее, приложение завершается сбоем после завершения телефонного звонка.

Я указал строку, в которой происходит сбой приложения, в виде строки комментария «строка сбоя» в коде.

public class CallBarring extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (!intent.getAction().equals("android.intent.action.PHONE_STATE"))
            return;

        else {
            //popup operations...
            }
            // Fetch the number of incoming call
            telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            listener = new PhoneStateListener() {
                @Override
                public void onCallStateChanged(int state, String incomingNumber) {
                    String stateString = "N/A";
                    switch (state) {
                        case TelephonyManager.CALL_STATE_IDLE:
                            stateString = "Idle";
                            dialog.dismiss();
                            break;
                        case TelephonyManager.CALL_STATE_OFFHOOK:
                            stateString = "Off Hook";
                            dialog.dismiss();
                            break;
                        case TelephonyManager.CALL_STATE_RINGING:
                            stateString = "Ringing";
                            dialog.show();
                            break;
                    }
                }
            };

            // See the contact's phone number
            telephonyManager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
            telephonyManager.listen(new PhoneStateListener(){
                @Override
                public void onCallStateChanged(int state, String incomingNumber) {
                    super.onCallStateChanged(state, incomingNumber);
                    System.out.println("incomingNumber : "+incomingNumber);
                    fetchUserInfo(incomingNumber);
                }
            },PhoneStateListener.LISTEN_CALL_STATE);
    }
    private void fetchUserInfo(String phoneNumber){
        Call<NumberInfo> call = numberAPI.getPhoneNumber(phoneNumber);
        call.enqueue(new Callback<NumberInfo>() {
            @Override
            public void onResponse(Call<NumberInfo> call, Response<NumberInfo> response) {
                /* crash line*/ numberInfo.setNames(response.body().getNames());
                incomingNumberName.setText(numberInfo.getNames().toString());
            }
            @Override
            public void onFailure(Call<NumberInfo> call, Throwable t) {

            }
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...