2013-10-12 7 views
5

「読み取り」を除いてユーザーがSMS(ネイティブから)を読み取ると、SMSの他のプロパティも変更されますか?例えばのために「読み取り」を除いたSMS(ネイティブから)をユーザーが読み取ると、SMSの他のプロパティも変更されますか?

int read_status = cur1.getInt(cur1.getColumnIndex("read")); 

READ_STATUSは読み取りSMSのための1になります。

私をご案内ください。

+0

「ネイティブから」とは何ですか? 「デバイスのデフォルトのSMSクライアントから」という意味の場合は、それらのうち〜100のうちどれですか? – CommonsWare

+0

こんにちはCommonsWare、返信いただきありがとうございます。はい、「ネイティブから」とは、「デバイスのデフォルトのSMSクライアントから」という意味です。実際には主な問題はhttp://stackoverflow.com/questions/19333961/how-to-get-notify-which-sms-got-read-from-nativephone-if-multiple-unread-sms-a解決してください問題 –

答えて

2

以下のコードでは、SMSコンテンツプロバイダから返されたすべてのメッセージの列と対応する値を印刷して、「読み取り」以外のプロパティが変更されているかどうかを判断できます。 Android 4.1.2 JZO54Kを実行しているNexus Sで実行されたという簡単なテストに基づいて、残念ながらSMSが未読状態から読み取り状態に変わったときに変更される値はありません。

関心があるかもしれない関連する "見られる"特性があります。 SMSがユーザに提示されたが、潜在的にメッセージの内容が読み取られる前に(例えば、ネイティブメッセージングアプリケーションの要約表示で表示されるとき)、SMSは0から1に変化する。 「見た」と「読む」との関係は、com.android.mms.data.Conversationクラスでの使用を見ることでさらに理解できます。

android.telephony.SmsMessage.getStatusOnIcc()メソッドを使用して読み込み状態を取得することもできますが、これはコンテンツプロバイダから既に取得しているのと同じ情報を提供する可能性があります。 解決しようとしている問題に役立つSMS APIの変更を追跡したい場合がありますが、隠れたAPI /コンテンツプロバイダに依存している場合は、既存の実装を破る可能性があります。

/* for use within a ContentObserver class; print all messages & fields 
    from the SMS Content Provider when change to mmssms.db is detected; 
    not optimized for production use */ 
    public void onChange(boolean selfChange) { 
    super.onChange(selfChange); 
    Uri uri = Uri.parse("content://sms/inbox"); 
    Cursor c= getContentResolver().query(uri,null,null,null,null); 
    if(c.moveToFirst()){ 
     for(int i=0;i<c.getCount();i++){ 
     Log.d(TAG,"======= Message ID "+c.getString(c.getColumnIndexOrThrow("_id")).toString()+" ======="); 
     for (int j=0;j<c.getColumnCount();j++){ 
      Log.d(TAG,c.getColumnName(j)+" = "+c.getString(j)); 
     } 
     } 
    }  
    } 
} 
関連する問題