安卓手機各種資訊獲取 (通訊錄簡訊息聯絡歷史)

2021-06-10 05:26:31 字數 1772 閱讀 5816

由於最近公司在做手機資訊採集專案,做得很吃力,效果也不理想。

加上今天負能量較多,謝謝一些近日搜尋回來的安卓手機經驗。

1.目標

在pc端程式獲取手機中的各種資訊,主要通訊錄、簡訊息、聯絡歷史等

2.過程

public listgetthjl(), null, null,calllog.calls.default_sort_order);

for (int i = 0; i < cursor.getcount(); i++)

return listthjl;

}public listgetsmsinphone() ;

cursor cur = getcontentresolver().query(uri, projection, null, null, "date desc"); // 獲取手機內部簡訊

if (cur.movetofirst()) else if (inttype == 2) else

msgitem[0]=straddress;

msgitem[1]=intperson+"";

msgitem[2]=strbody;

msgitem[3]=strdate;

msgitem[4]=strtype;

msglist.add(msgitem);

} while (cur.movetonext());

if (!cur.isclosed())

} } catch (sqliteexception ex)

return msglist;

} private list> getgxr() while (phones.movetonext());} }

hashmapi = new hashmap();

i.put("name", displayname);

i.put("key", phonenumber);

items.add(i);

} while (cur.movetonext());

} else

}catch( exception ex ) finally

return items;

}

首先把自己開發的apk包通過adb推送到目標手機安裝,並通過adb啟動該程式,該程式啟動後自動獲取手機資訊,並以寫檔案形式生成xml檔案在手機上。而在pc端程式在啟動該程式後是無法獲知該程式的執行狀態的,所以pc程式就還是通過adb不斷判斷監測手機端指定路徑下的xml檔案是否生成。如果生成了,則通過adb拷貝的本地pc並解析獲取資料(當然如果apk程式執行報錯也可以通過寫檔案形式交換錯誤資訊給pc端)。個人覺得通過該方式交換資料速度會較快,但狀態卻增加了不可控,有改進空間。

附adb解疑:adb.exe,做過安卓開發應該都了解,是安卓手機與pc通訊的乙個程式。只有手機開啟除錯模式,並且pc安裝好驅動後,在裝置管理器中顯示為

使用到的cmd命令:

1.安裝自己的apk包: adb install "d:/xx.apk"

2.啟動自己的程式: adb shell am start -n com.xdh.xdhandroid/com.xdh.xdhandroid.mainactivity(後半部分為  apk命名空間/apk程式名)

3.從手機拷貝xml檔案到pc端: adb pull /sdcard/xx.xml "d:/xx.xml"

基本流程就這樣,算是這幾天研究的成果吧。ps:vs與eclipse交換著用真不習慣,快捷鍵截然不同。

獲取手機通訊錄

在公司裡寫了一段上傳使用者通訊錄的 寫下來,以便以後查閱 獲取手機裡的通訊錄 獲取通訊錄 param context return 返回包含使用者名稱,與號碼的arraylist public arraylistgetcontact context context phones.close alla...

獲取手機通訊錄

手機聯絡人,通過乙個服務想歪提供資料 所有手機聯絡人的資料我們會在服務裡面查詢,然後再返回給activity 首先,我們建立出 contentresolver contentresolver 的建立時通過上下文來獲取的 contentresolver cr context.getcontentres...

獲取手機通訊錄資訊方法總結

1.最簡潔的方法 使用類android.provider.contactscontract.commondatakinds.phone 如下 cursor c getcontentresolver query contactscontract.commondatakinds.phone.conten...