由於某些原因,Android上的NO短信應用程序似乎提供了標記未讀短信的非常基本的功能(即使是舊的笨手機)。Android:標記短信(SMS)未讀
我很好奇自己寫了這樣一個應用程序,但在開始之前,我想知道一些關於如何去做以及爲什麼以前沒有做過的事情。當然這不是不可能的?
由於某些原因,Android上的NO短信應用程序似乎提供了標記未讀短信的非常基本的功能(即使是舊的笨手機)。Android:標記短信(SMS)未讀
我很好奇自己寫了這樣一個應用程序,但在開始之前,我想知道一些關於如何去做以及爲什麼以前沒有做過的事情。當然這不是不可能的?
注:首先,只是爲了讓你知道在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: 從來沒有測試和試。
希望這些信息可以幫助你,並節省您的時間就死路一條路線去:)))
因此,也許這就是爲什麼Play商店中沒有可以將短信標記爲未讀的應用程序?我覺得這種基本功能缺失,看起來不可能在android中實現,這很荒謬。 – pinkfloydhomer
是的,原因是非常多的只有。關於您缺少的功能問題早期版本支持消息傳遞內容提供程序,但稍後由於安全/隱私以及安全方面而被拔出,以便供應商根據需要修改操作系統及其消息系統時應用程序不會中斷。 – iabhi
@pinkfloydhomer這就是說,如果這種標記的實際使用*只是不會忘記稍後回覆消息(我猜這是該功能最常見的用例),那麼添加額外功能會不太容易標記在應用程序級別?就像一個簡單的「不要讓我拉在你的檔案中」的標籤一樣? –
有一個名爲「標記爲未讀」的應用程序,由ChristianAsbjørnSkogsberg出版(檢查它),所以我想這是可能的。
是的,但這個應用程序已被刪除。它在2.x上工作,雖然它不如將功能集成到短信應用本身那麼優雅。 – pinkfloydhomer
在這裏你去
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
這裏是您的解決方案http://stackoverflow.com/questions/6059604/set-sms-as-read -in-android將false或0作爲讀取值傳遞。 –