當前位置:首頁 » 安卓系統 » android獲取通話記錄

android獲取通話記錄

發布時間: 2024-10-16 14:09:33

⑴ android手機通訊錄以及通話記錄在哪個文件夾

安卓手機保存通話記錄的默認路徑是
/data/data/com.android.providers.contacts/databases/
丟失的通話記錄也可以通過數據恢復軟體進行恢復。

⑵ android手機 使用詳細記錄查詢 命令

1、使用詳細記錄查詢命令,可以打開自己手機的撥號程序。

⑶ android手機通訊錄以及通話記錄在哪個文件夾

在內部存儲卡的的data/com.android.provides.contacts裡面。

以三星的s8為例

找到通訊錄以及通話記錄方法:

1、打開三星的s8手機,在系統界面找到「我的文件」。

⑷ 怎麼查通話錄音記錄

在進行打電話後,需要進行錄音後,打開【文件管理】——【音頻】打開後進行播放即可,或者打開撥打號碼,點擊播放圖標就可以聽到錄制內容。

(參考環境: 手機型號:OPPOK9, 手機系統:Android11 ,ColorOSV11.1 APP版本:音樂40.7)

方法一:文件管理

1.進行打電話時,需要點擊通話界面的【錄音】。

以上就是通話錄音回放的方法,如有其他疑問,歡迎留言交流哦。

⑸ 如何導入android系統的通話記錄

涉及到對通話記錄的讀和寫、需要在sd卡上寫存放通話記錄數據的文件,所以需要加許可權:

[html] view plain
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>

首先,通話記錄的獲取,只需要獲取部分欄位即可滿足即可:

將數據保存到一個自定義的Model對象中。

[html] view plain
Cursor cursor = mContext.getContentResolver().query(CallLog.Calls.CONTENT_URI, null, "date > ?", new String[] { "" + timestamp }, CallLog.Calls.DEFAULT_SORT_ORDER);
while (cursor.moveToNext()) {
CalllogModel calllogModel = new CalllogModel();
// name
calllogModel.setName(cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME)));
// start call datetime
calllogModel.setDatetime(cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE)));
// phonenumber
calllogModel.setNumber(cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER)));
// ration
calllogModel.setDuration(cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DURATION)));
// call type
calllogModel.setType(cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE)));
// is read
calllogModel.setIs_read(cursor.getInt(cursor.getColumnIndex(CallLog.Calls.IS_READ)));
modifyVector(0, calllogModel, ADD_VECTOR); //調用保存到文件的方法
}
cursor.close();
cursor = null;

將通話記錄導入到系統的資料庫中:

[html] view plain
ContentResolver contentResolver = mContext.getContentResolver();
values.put(CallLog.Calls.CACHED_NAME, calllogModel.getName());
values.put(CallLog.Calls.NUMBER, calllogModel.getNumber());
values.put(CallLog.Calls.DATE, calllogModel.getDatetime());
values.put(CallLog.Calls.DURATION, calllogModel.getDuration());
values.put(CallLog.Calls.IS_READ, calllogModel.getIs_read());
values.put(CallLog.Calls.TYPE, calllogModel.getType());
contentResolver.insert(CallLog.Calls.CONTENT_URI, values);

還有兩點考慮:
1. 通話記錄的保存方式:
選擇通過文本文件來保存,一行算足一條通話記錄。
每個通話記錄以字元串的形式保存到文本文件
java中提供BufferReader和BufferWriter兩個類可以支持一行一行的讀和寫
在導入通話記錄的時候,讀到一行記錄,就處理一行:string->json->model->contentvalues->contentResolver.insert
2. 處理效率和OOM異常避免的情況
在處理導出通話記錄的時候,通話記錄的條數可能成千上萬條。
在這樣的情況下,需要注意:
a. 那麼多記錄數不能全部寫到內存中,暫據的內存太大,容易報OOM的錯誤
b. 將那些數據寫入到文件中的時候,不能每一次都打開IO流和關閉IO流,耗時耗資源
解決的方法是,維護一個集合Vector<model>,當從系統資料庫中讀取到一條記錄的時候,將其vector,add(model);當每處理完一個model之後,通過vector.remove(0)獲取新的Model對象進行處理。
讀取記錄的過程和處理記錄的過程,用兩個線程同步執行。
保證多線程下數據的安全考慮,對該集合變數的操作,用同步鎖對其進行限定

[html] view plain
/**
* 需要增加一個對象到集合的時候,type=1;需要獲取一個對象的時候,type=2
* @param index
* @param calllogModel
* @param type
* @return
*/
private static synchronized CalllogModel modifyVector(int index, CalllogModel calllogModel, int type) {
switch (type) {
case 1:
if (calllogModels.size()>1000) { //確保集合的體積不會過大
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
calllogModels.add(calllogModel);
break;
case 2:
if (!calllogModels.isEmpty()) {
return calllogModels.remove(0);
} else {
return null;
}
default:
break;
}
return null;
}

熱點內容
存儲空間不足某些系統功能 發布:2024-10-16 17:59:24 瀏覽:240
你是怎麼做資產配置的 發布:2024-10-16 17:58:46 瀏覽:869
南京社保原始密碼是什麼 發布:2024-10-16 17:58:00 瀏覽:917
為什麼叫波斯密碼 發布:2024-10-16 17:42:16 瀏覽:371
linux文件共享samba 發布:2024-10-16 17:41:30 瀏覽:825
有密碼的壓縮文件 發布:2024-10-16 17:28:19 瀏覽:726
115瀏覽器視頻緩存 發布:2024-10-16 17:22:59 瀏覽:674
家裡密碼鎖忘記了如何設置新密碼 發布:2024-10-16 17:21:28 瀏覽:98
如何清除微信瀏覽器緩存 發布:2024-10-16 17:07:19 瀏覽:596
安卓轉蘋果為什麼要付99塊錢 發布:2024-10-16 16:43:57 瀏覽:122