Android:标记短信(SMS)未读

时间:2012-06-19 11:30:43

标签: android sms

出于某种原因,Android上的没有短信应用程序似乎提供了标记短信未读的基本功能(甚至是老式哑巴手机)。

我正在考虑自己写这样一个应用程序,但在开始之前,我想知道一些关于如何做到以及为什么以前没有做过的事情。当然这不是不可能吗?

3 个答案:

答案 0 :(得分:2)

注意: 首先,只是为了让您知道在Android中使用Android中的消息系统(2.3或更低版本) )对于像SMS这样的事情需要查询内容提供商,而这些内容提供商是官方不可用的,而且Android家伙也已经警告过它。您可以在以下网址中查看: http://android-developers.blogspot.in/2010/05/be-careful-with-content-providers.html

进一步为您的解决方案而且只是为了每个人的关注,我想根据Android操作系统版本划分我的解释:

- 版本2.3或更低版本: 是应用程序在Pankaj Kumar的指导下制作起来非常简单,它适用于上述Android操作系统版本及更低版本。

- 版本4.0&起来: 应用程序将 失败而无法正常工作 。是的,正如Android Dev Guys所警告的那样,从这个版本开始,你将无法阅读Messaging内容,因为我已经尝试过,因此你的应用程序无法用于即将推出的Android版本。 你只能得到它们的数量:收件箱,发送,发件箱失败等......但你不能修改或阅读内容。

- 版本> 3.0& < 4.0: 从未测试过并试过。

希望这些信息可以帮助您并节省您走上死路线的时间:)))

答案 1 :(得分:1)

你去吧

SMS数据库具有以下列

06-19 17:41:19.723: V/vipul(25223): _id
06-19 17:41:19.723: V/vipul(25223): thread_id
06-19 17:41:19.723: V/vipul(25223): address
06-19 17:41:19.723: V/vipul(25223): person
06-19 17:41:19.723: V/vipul(25223): date
06-19 17:41:19.723: V/vipul(25223): protocol
06-19 17:41:19.723: V/vipul(25223): read
06-19 17:41:19.723: V/vipul(25223): status
06-19 17:41:19.723: V/vipul(25223): type
06-19 17:41:19.723: V/vipul(25223): reply_path_present
06-19 17:41:19.723: V/vipul(25223): subject
06-19 17:41:19.723: V/vipul(25223): body
06-19 17:41:19.723: V/vipul(25223): service_center
06-19 17:41:19.723: V/vipul(25223): locked
06-19 17:41:19.723: V/vipul(25223): error_code
06-19 17:41:19.723: V/vipul(25223): seen
06-19 17:41:19.723: V/vipul(25223): deletable
06-19 17:41:19.723: V/vipul(25223): hidden
06-19 17:41:19.723: V/vipul(25223): group_id
06-19 17:41:19.723: V/vipul(25223): group_type
06-19 17:41:19.723: V/vipul(25223): delivery_date
06-19 17:41:19.723: V/vipul(25223): date_sent

以下代码段将所有短信标记为未读,您可以将其设置为与ID匹配,并且仅将该短信设为未读

package org.vipul;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;

public class SMSSampleActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Uri uri = Uri.parse("content://sms/inbox");
        Cursor cursor = managedQuery(uri, null, null, null, null);

        for (int i = 0; i < cursor.getColumnCount(); i++) {
            Log.i("vipul", cursor.getColumnName(i));
        }

        if (cursor.moveToFirst()) {
            do {

                String id = cursor.getString(0);

                ContentValues contentValues = new ContentValues();
                contentValues.put("read", false);
                getContentResolver().update(uri, contentValues, "_id=?",
                        new String[] { id });
                contentValues.clear();
            } while (cursor.moveToNext());

        }
    }
}

最后在清单

中添加android.permission.READ_SMS ans android.permission.WRITE_SMS

答案 2 :(得分:0)

有一个名为“Mark as Unread”的应用程序,由ChristianAsbjørnSkogsberg出版(检查它)所以我想这是可能的。