我正在开发一个应用程序,该应用程序在呼入和呼出时都需要执行一些任务。 但是在这里,当我从应用程序发出“去电”呼叫时,只有来电代码有效,它没有检测到ACTION_OUTGOING。
我用Log进行了跟踪,发现当我进行拨出电话时,没有与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());
}
}
}
}
}
}
}