При исходящем звонке работает только часть кода входящего звонка - PullRequest
0 голосов
/ 25 сентября 2018

Я занимаюсь разработкой приложения, в котором необходимо выполнять какую-то задачу, когда входящий и исходящий вызов.Но здесь, когда я делаю «исходящий» вызов из приложения, работает только код входящего вызова, он не обнаруживает ACTION_OUTGOING.

Я проследил с помощью Журнала и обнаружил, что при выполнении исходящего вызова код не связанна ACTION_OUTGOING выполняется.

вот что я пробовал до сих пор.

 public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(ACTION_IN)) {
        Log.e(TAG,  "ACTION_IN" + "");
        if ((bundle = intent.getExtras()) != null) {
            state = bundle.getString(TelephonyManager.EXTRA_STATE);
            if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
                inCall = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
                wasRinging = true;
                Toast.makeText(context, "IN : " + inCall, Toast.LENGTH_LONG).show();
            } else if (state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
                if (wasRinging == true) {

                    Toast.makeText(context, "ANSWERED", Toast.LENGTH_LONG).show();
                    startRecord("incoming");
                }
            } else if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
                Log.e(TAG, "ACTION_IN EXTRA_STATE_IDLE");
                wasRinging = false;
                Toast.makeText(context, "Call End", Toast.LENGTH_LONG).show();
                end_time = System.currentTimeMillis();
                if (recordstarted) {
                    recorder.stop();
                    recordstarted = false;
                }
                String path = Environment.getExternalStorageDirectory().toString() + "/Ripples_Call_Recording";
                Log.e("Files", "Path: " + path);
                File directory = new File(path);
                File[] files = directory.listFiles();
                Log.e("Files", "Size: " + files.length);
                for (int i = 0; i < files.length; i++) {
                    Log.e("Files", "FileName: " + files[i].getName());
                    performIncomingTask(files[i], path, files[i].getName());
                }
            }
        }
    }


    else if (intent.getAction().equals(ACTION_OUT)) {
        Log.e(TAG,  "ACTION_OUT ");
        if ((bundle = intent.getExtras()) != null) {
            outCall = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
            Toast.makeText(context, "OUT : " + outCall, Toast.LENGTH_LONG).show();
            startRecord("outgoing");
            if ((bundle = intent.getExtras()) != null) {
                state = bundle.getString(TelephonyManager.EXTRA_STATE);
                if (state != null) {
                    if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
                        Log.e(TAG,   "ACTION_OUT   EXTRA_STATE_IDLE ");

                        wasRinging = false;
                        Toast.makeText(context, "REJECT", Toast.LENGTH_LONG).show();
                        if (recordstarted) {
                            recorder.stop();
                            recordstarted = false;
                        }
                        String path = Environment.getExternalStorageDirectory().toString() + "/Ripples_Call_Recording";
                        Log.e("Files", "Path: " + path);
                        File directory = new File(path);
                        File[] files = directory.listFiles();
                        Log.e("Files", "Size: " + files.length);
                        for (int i = 0; i < files.length; i++) {
                            Log.e("Files", "FileName: " + files[i].getName());
                            performOutGoingTask(files[i], path, files[i].getName());
                        }
                    }
                }
            }
        }
    }

}
...