1

私は現在、未読の SMS の数を追跡する必要があるライブ壁紙に取り組んでいます。SMS を受信したら、次のように SMSCount を更新します。

@Override
public void onReceive(Context context, Intent intent) {
    final Uri SMS_INBOX = Uri.parse("content://sms/inbox");

    Cursor c = context.getContentResolver().query(SMS_INBOX,
                                                  null,
                                                  "read = 0",
                                                  null,
                                                  null);
    mSMSCount = c.getCount();
    c.close();
}

正常に動作します。ただし、値はメッセージが受信されたときにのみ更新されるため、それ以前は誤った値 (SMSCounts の初期化値) が返されます。したがって、SMSCount を正しい値に初期化するには、上記のコードで初期化する必要があります。問題は、コンテキストが必要なことです。アプリケーション コンテキストをブロードキャスト レシーバーのコンストラクターに渡そうとすると、「空のコンストラクターがありません」という例外が発生します。

4

3 に答える 3

2

空のコンストラクターと、現在コンテキストを渡しているコンストラクターをクラスに追加するだけです。つまり、引数を取らないコンストラクターを追加します。

于 2013-03-28T18:46:02.633 に答える
0

パラメーター化されたコンストラクターとデフォルトのコンストラクターを追加できます。

于 2013-04-01T12:08:37.350 に答える