我試圖獲得短信列表,下面的代碼在某些設備上運行良好,但在其他設備中無法正常工作。使用以下代碼測試四個設備的詳細信息。如何根據各種設備獲取短信列表
LG optimus one [android 2.2] - 效果很好。 SS galaxy s3 [android4.0.4] - 效果很好。 SS銀河s2 [android 2.3.5] - 不工作。 SS galaxy s2 [android 4.0.4] - 不工作。
看來,結果取決於設備而不是android版本,因爲具有相同的android版本[4.0.4]的兩個設備顯示不同。設備無法正常工作的症狀是c.getCount()= 0,即使它們有很多短信。查詢不返回任何內容。爲什麼這些?我怎樣才能在s2中獲得sms列表?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String smsMsgBody = null;
String smsMsgAddress = null;
String smsMsgDirection = null;
Uri uri = Uri.parse("content://sms");
// Uri uri = Uri.parse("content://sms/inbox");
// Uri uri = Uri.parse("content://sms/conversations/");
Cursor c= getContentResolver().query(uri, null, null,null,null);
// startManagingCursor(c);
if (c.getCount() > 0)
{
String count = Integer.toString(c.getCount());
while (c.moveToNext())
{
smsMsgBody = c.getString(c.getColumnIndex("body"));
smsMsgAddress = c.getString(c.getColumnIndex("address"));
smsMsgDirection = c.getString(c.getColumnIndex("type"));
// Do things using above sms data
}
}
c.close();
}
「這是爲什麼?」 - 直到Android 4.4,SMS'ContentProvider'沒有記錄並且不受支持。不需要任何短信應用程序將消息存儲在此提供程序中。 – CommonsWare
我的測試顯示短信查詢在Android 4.0和2.3中可用,但不在2.3這是我無法理解的。 – user3288131
@ user3288131版本並不重要,它是設備,因爲只有一些設備支持該「ContentProvider」。 – hichris123