注意:該方法的權(quán)限需要在Manifest中添加:
<uses-permission android:name="android.permission.READ_CONTACTS" > </uses-permission>
<uses-permission android:name="android.permission.READ_CALL_LOG"></uses-permission>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"></uses-permission>
之后手動開啟客扎,如果需要添加運行時權(quán)限祟峦,去Demo中查看添加運行時權(quán)限
private void readCallLogs() {
outgoingList.clear();
/*Query Call Log Content Provider*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.READ_CALL_LOG) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// Activity#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for Activity#requestPermissions for more details.
return;
}
}
Cursor callLogCursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, CallLog.Calls.DEFAULT_SORT_ORDER);
/*Check if cursor is not null*/
if (callLogCursor != null) {
/*Loop through the cursor*/
while (callLogCursor.moveToNext()) {
/*Get ID of call*/
String id = callLogCursor.getString(callLogCursor.getColumnIndex(CallLog.Calls._ID));
/*Get Contact Name*/
String name = callLogCursor.getString(callLogCursor.getColumnIndex(CallLog.Calls.CACHED_NAME));
/*Get Contact Cache Number*/
String cacheNumber = callLogCursor.getString(callLogCursor.getColumnIndex(CallLog.Calls.CACHED_NUMBER_LABEL));
/*Get Contact Number*/
String number = callLogCursor.getString(callLogCursor.getColumnIndex(CallLog.Calls.NUMBER));
/*Get Date and time information*/
long dateTimeMillis = callLogCursor.getLong(callLogCursor.getColumnIndex(CallLog.Calls.DATE));
long durationMillis = callLogCursor.getLong(callLogCursor.getColumnIndex(CallLog.Calls.DURATION));
/*Get Call Type*/
int callType = callLogCursor.getInt(callLogCursor.getColumnIndex(CallLog.Calls.TYPE));
String duration = durationMillis+""; //通話時間長度(秒)
//時間戳轉(zhuǎn)換
SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
String dateString = format.format(dateTimeMillis);// dateTimeMillis = 1365514019004; 通話時間(什么時候通話的)
if (cacheNumber == null)
cacheNumber = number;
if (name == null)
name = "No Name";
/*Create Model Object*/
//CallLogModel callLogModel = new CallLogModel(name, cacheNumber, duration, dateString);
String callLogString = "姓名:"+name+",電話號碼:"+cacheNumber+",通話時長"+duration+",通話時間:"+dateString;
/*Add it into respective ArrayList*/
if (callType == CallLog.Calls.OUTGOING_TYPE) {
outgoingList.add("您撥打過:"+callLogString);
} else if (callType == CallLog.Calls.INCOMING_TYPE) {
outgoingList.add("您接聽過:"+callLogString);
} else if (callType == CallLog.Calls.MISSED_TYPE) {
outgoingList.add("來電未接聽:"+callLogString);
}
}
/*Close the cursor*/
callLogCursor.close();
}
Log.d("log1", "outgoingList:"+outgoingList);
}