Я занимаюсь разработкой приложения, в котором необходимо выполнять какую-то задачу, когда входящий и исходящий вызов.Но здесь, когда я делаю «исходящий» вызов из приложения, работает только код входящего вызова, он не обнаруживает 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());
}
}
}
}
}
}
}