我已通过此代码获取了所有通话详情。
private void getCallDetails() {
StringBuffer sb = new StringBuffer();
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
return;
}
Cursor managedCursor = getActivity().getContentResolver().query(CallLog.Calls.CONTENT_URI,
null, null, null, CallLog.Calls.DATE + " DESC LIMIT 40");
int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
// sb.append("Call Details :");
String finalDate[];
while (managedCursor.moveToNext()) {
String phNumber = managedCursor.getString(number);
String callType = managedCursor.getString(type);
String callDate = managedCursor.getString(date);
Date callDayTime = new Date(Long.valueOf(callDate));
String durationn=managedCursor.getString(duration);
System.out.println("Ph No....."+ phNumber);
System.out.println("Type....."+callType);
System.out.println("DAte....."+ callDate);
System.out.println("Duration....."+ callDayTime);
System.out.println("Call date time is "+callDayTime);
String calldatechange=callDayTime.toString();
String callDuration = managedCursor.getString(duration);
String dir = null;
int dircode = Integer.parseInt(callType);
switch (dircode) {
case CallLog.Calls.OUTGOING_TYPE:
dir = "OUTGOING";
break;
case CallLog.Calls.INCOMING_TYPE:
dir = "INCOMING";
break;
case CallLog.Calls.MISSED_TYPE:
dir = "MISSED";
break;
}
phnoList.add(phNumber);
calldura.add(durationn);
System.out.println("call duration is"+calldura);
//calDatList.add(callDate);
calltimeList.add(calldatechange);
/* forcalLog.add("\nPhone Number:--- " + phNumber + " \nCall Type:--- "
+ dir + " \nCall Date:--- " + callDayTime
+ " \nCall duration in sec :--- " + callDuration);*/
sb.append(phNumber +","+ dir + ","+ callDayTime + ","+ callDuration);
// sb.append("\n---------------------------------------------");
}
System.out.println("Myphone is::"+ phnoList.size());
System.out.println("callDate is::"+ calDatList);
System.out.println("calltimeList is::"+ calltimeList);
managedCursor.close();
此外,我已经获取了断开呼叫的时间。我可以在呼叫断开时显示弹出窗口。现在我想在呼叫断开连接意图的地方获取最后一个呼叫的所有详细信息。检查哪些是通过广播接收者完成的,并将所有细节附加到网络服务中。我该怎么办呢。
if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL"))
{
savedNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER");
Toast.makeText(context,"the no. is"+savedNumber,Toast.LENGTH_LONG).show();
// onOutgoingCallStarted(context,"",callStartTime);
}
else
{
String stateStr = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
String number = intent.getExtras().getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
int state = 0;
if(stateStr.equals(TelephonyManager.EXTRA_STATE_IDLE)) {
switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
Log.d("Testing", "Outgoing call has been disconnect");
intent = new Intent(context, MyCustomDialog.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent);
System.out.println("CAll has been disconnect...............");
// Toast.makeText(this, "CAll has been disconnect", Toast.LENGTH_LONG).show();
break;
}
}
这里我正在获取呼叫断开操作。同时我想通过网络服务发送所有详细信息。