我可以使用TelephonyManager獲取用戶的電話話務員,並且我需要使用該名稱來檢索從話務員接收到的文本。我如何使用Android的ContextResolver.query()方法使用SQL where子句?這是我的代碼來檢索用戶收到的所有文本消息。我需要調整它來檢索用戶的電話運營商的消息。如何從電話接線員檢索短信?
public void fetchSMS() {
TelephonyManager tMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String operator=tMgr.getNetworkOperatorName();
Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
String[] cols = new String[]{"_id", "thread_id", "address", "person", "date", "body", "type"};
Cursor cursor1 = getContentResolver().query(
mSmsinboxQueryUri,
cols, null, null, null);
if (cursor1!=null && cursor1.moveToFirst()) {
do {
String address = cursor1.getString(cursor1
.getColumnIndex(cols[2]));
//String address2=(address.split("-"))[1];
String date = cursor1.getString(cursor1
.getColumnIndex(cols[4]));
String msg = cursor1.getString(cursor1
.getColumnIndex(cols[5]));
String type = cursor1.getString(cursor1
.getColumnIndex(cols[6]));
smsLog.append("\n" + "Address:").append(address).append("\n" + "Date:").append(date).append("\n" + "Message:").append(msg).append("\n" + "Type:").append(type).append("\n\n");
cursor1.moveToNext();
}
while (!cursor1.isAfterLast());
cursor1.close();
}
}
你不會是能夠做到這一點 - 可靠,反正 - 除非你知道從哪個任何給定的操作者可以發送短信的每個地址。 SMS表中沒有包含操作員名稱的列,並且不能保證操作員的消息將在消息正文中具有其名稱。 –
當發件人在充值(預付費電話)後收到來自其電信運營商的留言時,他們會收到特定地址的文本(我的電話運營商稱爲Docomo,而我收到的留言有發件人爲TA-Docomo) 。其他運營商也是如此。我只需要知道如何在query()方法中添加where子句。 –
那麼,這不能保證是每個人的情況,但如果你只是想要一個簡單的where子句,你的查詢就會是這樣的:'query(mSmsinboxQueryUri,cols,「LIKE'%」+ operator +「%'」 ,null,null)'。 –