由於最近公司在做手機資訊採集專案,做得很吃力,效果也不理想。
加上今天負能量較多,謝謝一些近日搜尋回來的安卓手機經驗。
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...