何らかの理由で、Android の SMS アプリは、SMS を未読としてマークするという非常に基本的な機能 (古いダム電話にもある) を提供していないようです。
私はそのようなアプリを自分で作成することを検討していますが、始める前に、その方法と、これまで行われていない理由について少し知りたいと思います。さすがに無理じゃない?
注:まず、Android でメッセージング システム(2.3 以下) を使用することはほとんどありません。これは、SMS などを使用するために、公式には利用できないコンテンツ プロバイダーにクエリを実行する必要があるためです。それについて警告した。以下の URL で確認できます: http://android-developers.blogspot.in/2010/05/be-careful-with-content-providers.html
さらに、あなたのソリューションのために、そしてみんなの懸念のために、Android OSのバージョンに従って私の説明を分けたいと思います:
- バージョン 2.3 以下:はい、アプリケーションはPankaj Kumar のガイドに従って簡単に作成でき、上記の Android OS バージョン以下で動作します。
- バージョン 4.0 以降: アプリケーションが失敗し、動作しません。はい、Android Dev Guys が警告しているように、このバージョン以降では、私が試したように Messaging コンテンツを読み取ることができないため、アプリケーションは今後の Android リリースでは動作しません。受信トレイ、送信済み、送信失敗などの数のみを取得できますが、内容を変更したり読んだりすることはできません。
- バージョン > 3.0 & < 4.0 : テストも試行もされていません。
この情報がお役に立ち、行き止まりのルートに行く時間を節約できることを願っています :)))
どうぞ
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 を未読としてマークします。ID に一致するように変更して、その SMS のみを未読にすることができます。
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
ChristianAsbjørnSkogsbergが公開している「MarkasUnread」というアプリがあります(チェックしてください)ので、可能だと思います。