2013-05-03 9 views
1

Я хочу прочитать конкретное SMS-сообщение в папке «Входящие». Я нашел в Интернете, как читать все смс в папке «Входящие». Это то, что я сделал. Пожалуйста, помогите мне прочитать только одно SMS с определенного номера. СпасибоПрочитать SMS с определенного номера

package com.example.liresms; 

import android.app.Activity; 
import android.database.Cursor; 
import android.net.Uri; 
import android.os.Bundle; 
import android.widget.TextView; 

public class ReadSMS extends MainActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     TextView view = new TextView(this); 
     Uri uriSMSURI = Uri.parse("content://sms/inbox"); 
     Cursor cur = getContentResolver().query(uriSMSURI, null, null, null,null); 
     String sms = ""; 
     while (cur.moveToNext()) { 
      sms += "From :" + cur.getString(2) + " : " + cur.getString(11)+"\n";   
     } 
     view.setText(sms); 
     setContentView(view); 
    } 
} 

ответ

0

Вы довольно близко к этому уже сделали. Я предлагаю вам взглянуть на аргументы метода ContentResolver.query и обратить особое внимание на параметр selection. То, что вы хотите сделать, это выбрать только сообщения, в которых конкретный столбец равен числу, который вы ищете ...

Что-то вроде

Cursor cur = getContentResolver().query(uriSMSURI, null, "from=6159995555", null,null); 

Я не знаю, конкретное имя столбца с верхней части моей головы, но это должно вам начать работу в правильном направлении ...

+0

Нет, это не работало! – user2207848

+1

@ user2207848 Вы должны быть более конкретными. Что значит «это не сработало»? –

1

Попробуйте это:

StringBuilder smsBuilder = new StringBuilder(); 
final String SMS_URI_INBOX = "content://sms/inbox"; 
final String SMS_URI_ALL = "content://sms/"; 
try 
{ 
    Uri uri = Uri.parse(SMS_URI_INBOX); 
    String[] projection = new String[] { "_id", "address", "person", "body", "date", "type" }; 
    Cursor cur = getContentResolver().query(uri, projection, "address=123456789", null, "date desc"); 
    if (cur.moveToFirst()) 
    { 
     int index_Address = cur.getColumnIndex("address"); 
     int index_Person = cur.getColumnIndex("person"); 
     int index_Body = cur.getColumnIndex("body"); 
     int index_Date = cur.getColumnIndex("date"); 
     int index_Type = cur.getColumnIndex("type");   
     do 
     { 
      String strAddress = cur.getString(index_Address); 
      int intPerson = cur.getInt(index_Person); 
      String strbody = cur.getString(index_Body); 
      long longDate = cur.getLong(index_Date); 
      int int_Type = cur.getInt(index_Type); 

      smsBuilder.append("[ "); 
      smsBuilder.append(strAddress + ", "); 
      smsBuilder.append(intPerson + ", "); 
      smsBuilder.append(strbody + ", "); 
      smsBuilder.append(longDate + ", "); 
      smsBuilder.append(int_Type); 
      smsBuilder.append(" ]\n\n"); 
     }while (cur.moveToNext()); 
     if (!cur.isClosed()) 
     { 
      cur.close(); 
      cur = null; 
     } 
    } 
    else 
    { 
     smsBuilder.append("no result!"); 
    } 
} 
catch (SQLiteException ex) 
{ 
    Log.d("SQLiteException", ex.getMessage()); 
} 

Включите это разрешение в AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_SMS" /> 
+0

thx для вашей помощи, но он не работал – user2207848

+1

@ user2207848 Вам нужно быть более конкретным. Что значит «это не сработало»? –

+0

@Mihir Shah: есть ли способ прочитать все sms с определенного номера контакта? –

Смежные вопросы