2012-06-19 48 views
4

由於某些原因,Android上的NO短信應用程序似乎提供了標記未讀短信的非常基本的功能(即使是舊的笨手機)。Android:標記短信(SMS)未讀

我很好奇自己寫了這樣一個應用程序,但在開始之前,我想知道一些關於如何去做以及爲什麼以前沒有做過的事情。當然這不是不可能的?

+2

這裏是您的解決方案http://stackoverflow.com/questions/6059604/set-sms-as-read -in-android將false或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: 從來沒有測試和試。

希望這些信息可以幫助你,並節省您的時間就死路一條路線去:)))

+0

因此,也許這就是爲什麼Play商店中沒有可以將短信標記爲未讀的應用程序?我覺得這種基本功能缺失,看起來不可能在android中實現,這很荒謬。 – pinkfloydhomer

+0

是的,原因是非常多的只有。關於您缺少的功能問題早期版本支持消息傳遞內容提供程序,但稍後由於安全/隱私以及安全方面而被拔出,以便供應商根據需要修改操作系統及其消息系統時應用程序不會中斷。 – iabhi

+0

@pinkfloydhomer這就是說,如果這種標記的實際使用*只是不會忘記稍後回覆消息(我猜這是該功能最常見的用例),那麼添加額外功能會不太容易標記在應用程序級別?就像一個簡單的「不要讓我拉在你的檔案中」的標籤一樣? –

0

有一個名爲「標記爲未讀」的應用程序,由ChristianAsbjørnSkogsberg出版(檢查它),所以我想這是可能的。

+0

是的,但這個應用程序已被刪除。它在2.x上工作,雖然它不如將功能集成到短信應用本身那麼優雅。 – pinkfloydhomer

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 

下面片斷標記所有SMS爲未讀,你可以chnage它相匹配的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 in manifest