如果用户阅读短信(来自本机)不包括"阅读",是否还会修改短信的任何其他属性?
例如:
int read_status = cur1.getInt(cur1.getColumnIndex("read"));
Run Code Online (Sandbox Code Playgroud)
对于读取短信,read_status将变为1.
请指导我.
小智 2
下面的代码将允许您通过打印 SMS 内容提供程序返回的所有消息的列和相应值来确定除 \xe2\x80\x9cread\xe2\x80\x9d 之外的任何其他属性是否正在更改。根据我在运行 Android 4.1.2 JZO54K 的 Nexus S 上运行的快速测试,不幸的是,当短信从未读状态更改为已读状态时,似乎没有其他值被修改。
\n\n不过,有一个相关的 \xe2\x80\x9cseen\xe2\x80\x9d 属性可能会令人感兴趣。当 SMS 已呈现给用户但可能在消息内容被读取之前(例如,当显示在本机消息应用程序的摘要视图中时),它会从 0 更改为 1。通过查看com.android.mms.data.Conversation中的用法可以进一步理解“seen”和“read”之间的关系。
\n\n也可以使用 android.telephony.SmsMessage.getStatusOnIcc() 方法检索读取状态,但这可能会为您提供与已从内容提供程序检索到的相同信息。\n您可能想要跟踪 SMS 的更改Google 表示将在 Android 4.4 (KitKat) 中提供API,因为它们可以帮助解决您试图解决的问题,但如果您现有的实现依赖于隐藏的 API/内容提供程序,它们也可能会破坏您现有的实现。
\n\n/* for use within a ContentObserver class; print all messages & fields\n from the SMS Content Provider when change to mmssms.db is detected;\n not optimized for production use */\n public void onChange(boolean selfChange) {\n super.onChange(selfChange);\n Uri uri = Uri.parse("content://sms/inbox");\n Cursor c= getContentResolver().query(uri,null,null,null,null);\n if(c.moveToFirst()){\n for(int i=0;i<c.getCount();i++){\n Log.d(TAG,"======= Message ID "+c.getString(c.getColumnIndexOrThrow("_id")).toString()+" ======="); \n for (int j=0;j<c.getColumnCount();j++){\n Log.d(TAG,c.getColumnName(j)+" = "+c.getString(j));\n } \n }\n } \n }\n }\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
340 次 |
| 最近记录: |