2016-03-21 21 views
0

申し訳ありませんが、私は適切なタイトルを考え出していません。 私のアプリケーションを通じてSMSを既定のSMSアプリケーションで読み取ったものとしてマークすることは可能ですか? 私は自分のアプリケーションを開発しています。私は連絡先リストにないSMSを保存していますが、問題はいつでもSMSが受信されたときに、またデフォルトのSMSアプリケーションで受信されたときです。それから私は既定のSMSアプリケーションに移動し、SMSを既読としてマークする必要がないように、SMSを既読のSMSアプリケーションの読み取りとしてマークすることができます。 私は自分のアプリケーションからそれを行うことはできますか?受信SMSを既読のSMSアプリケーションとしてマークする

+0

このコードを試してみてください - いいえ。あなたがKitKatの上にいない限り、回避策があります。 –

+0

はい、コンテンツプロバイダーを使用して行うことができます。アプリケーションでSMSが取得されるとすぐに、dbに追加されません。 dbにそのsmsが入力されるまで待つ必要があります。だからあなたは受信したSMSのいつかの後にサービスを開始する必要があります。 –

+0

@SilvansSolankiあなたはその問題に役立つリンクを教えてください。 –

答えて

0

"私は自分のアプリケーションからのことを行うことができますか?"

private void markMessageASRead(Context context, String numb, String body) { 

     Uri uri = Uri.parse("content://sms/inbox"); 
     Cursor cursor = context.getContentResolver().query(uri, null, null, null, null); 
     try{ 

     while (cursor.moveToNext()) { 
       if ((cursor.getString(cursor.getColumnIndex("address")).equals(number)) && (cursor.getInt(cursor.getColumnIndex("read")) == 0)) { 
        if (cursor.getString(cursor.getColumnIndex("body")).startsWith(body)) { 
         String SmsMessageId = cursor.getString(cursor.getColumnIndex("_id")); 
         ContentValues values = new ContentValues(); 
         values.put("read", true); 
         context.getContentResolver().update(Uri.parse("content://sms/inbox"), values, "_id=" + SmsMessageId, null); 
         return; 
        } 
       } 
      } 
    }catch(Exception e) 
    { 
     Log.e("Mark Read", "Error in Read: "+e.toString()); 
    } 

}

+0

それを試してみてください。 –

関連する問題