1.QPython簡介
Qpython是一個(gè)安卓手機(jī)應(yīng)用,可以編輯運(yùn)行Python代碼,在官網(wǎng)或者各大應(yīng)用市場都可以下載。
目前QPython主要有三個(gè)版本,QPython,QPython3,QPython3.6,三者略有不同。
- QPython是基于Python2的,可安裝的Python包相對多一些。除了純Python模塊,還有些官方編譯好的可以下載,比較有用的像Numpy,Matplotlib等。
注:建議下載老版本的,新版本在我的安卓6.0手機(jī)上出現(xiàn)了各種模塊無法安裝的神奇現(xiàn)象。
QPython3,QPython3.6都是基于Python3的,前者是Python3.2版本,后者3.6。這倆能安裝的模塊較少,前者還可以用個(gè)Numpy,后者幾乎啥都裝不了。
QPython中有專門的安卓相關(guān)模塊。在QPython和QPython3.6中都存在于androidhelper模塊中,一般可以用
from androidhelper import Android導(dǎo)入。QPython3中還存在sl4a模塊,可以通過from sl4a import Android使用。官方還推出了AIPY這個(gè)app,想要聯(lián)合QPython做機(jī)器學(xué)習(xí)庫,不過我這邊啥都用不了。另外另一個(gè)安卓app Pydroid上基本也都有,就不說了。
2.用QPython讀取手機(jī)短信并保存
這里只用到androidhelper.Android中短信相關(guān)函數(shù)。
之前沒想過手機(jī)的短信都是怎么存儲(chǔ)的,這次倒是略微了解了一點(diǎn)。
2.1相關(guān)代碼
相關(guān)代碼和解釋如下:
from androidhelper import Android
import csv
d = Android()
#發(fā)短信,未成功,qpython3采用sl4a成功
d.smsSend('10086', 'test')
#獲取短信數(shù)目
c = d.smsGetMessageCount(False) #False表示讀取所有短信,True讀取未讀短信
print(c)
#獲取短信id
ids = d.smsGetMessageIds(False)
print(ids)
#獲取短信具體內(nèi)容,默認(rèn)讀取收件箱內(nèi)容,發(fā)送的信息使用參數(shù)'sent'
sms_data=d.smsGetMessages(False, 'inbox')
print(sms_data)
#將所有短信保存到csv文件中
names=['_id', 'address', 'date', 'body', 'read', 'person', 'status', 'type']
with open('sms.csv','w') as f:
f_scv = csv.DictWriter(f, names)
f_scv.writeheader()
f_scv.writerows(sms_data)
print('done')
2.2短信存儲(chǔ)信息
用這個(gè)程序可以獲取到短信存儲(chǔ)的一些信息,最終保存的部分主要是在names數(shù)組中。
names=['_id','address','date','body','read','person','status','type']
- _id是每條短信的原始id,有些數(shù)字不連續(xù),估計(jì)是因?yàn)椴糠侄绦疟粍h除了
- address就是對方手機(jī)號
- date就是短信息的時(shí)間戳
- body是短信具體內(nèi)容
- read表示已讀未讀,1為已讀,估計(jì)0是未讀。
- person不知道是啥,收件箱sent時(shí)無該項(xiàng)。
- status不知道是啥
- type,發(fā)信息還是收信息,1為收,2為發(fā)
3.參考資料
Qpython官網(wǎng)有androidhelper模塊的所有api借口介紹,除了本文中的短信模塊,還有一些算是有趣或者有用的,比如對話框等模塊。
官方鏈接見下:
qpython-androidhelper-apis