6

何らかの理由で、Android の SMS アプリは、SMS を未読としてマークするという非常に基本的な機能 (古いダム電話にもある) を提供していないようです。

私はそのようなアプリを自分で作成することを検討していますが、始める前に、その方法と、これまで行われていない理由について少し知りたいと思います。さすがに無理じゃない?

4

3 に答える 3

2

注:まず、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 : テストも試行もされていません。

この情報がお役に立ち、行き止まりのルートに行く時間を節約できることを願っています :)))

于 2012-06-19T12:30:05.010 に答える
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 を未読としてマークします。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_SMSansを追加しますandroid.permission.WRITE_SMS

于 2012-06-19T12:16:41.897 に答える
0

ChristianAsbjørnSkogsbergが公開している「MarkasUnread」というアプリがあります(チェックしてください)ので、可能だと思います。

于 2012-06-19T11:37:27.820 に答える