2011-03-27 2 views
1

Я пытаюсь получить данные каждый раз, когда Android отправляет SMS.Получить данные от отправленных SMS

форма данных:

  1. назначения номер телефона
  2. время доставки
  3. SMS тело

Каждый знает, как?

+0

что? если я использую диспетчер sms. Я слышал, что sms-менеджер может поймать данные из sms-сообщений. – Billy

+0

Во-первых, не отвечайте на свой вопрос, если это не ответ. Если у вас есть комментарии к ответу, добавьте комментарий к ответу. Во-вторых, «SmsManager» не «улавливает данные из send sms». – CommonsWare

+0

есть предложения по получению данных? Кстати, как ответить людям? я не вижу ответа .. – Billy

ответ

5

Получить смс в поле отправлено.

public List<SmsRep> getOutboxSms() 
{ 
    if(null == context) 
    { 
     return new ArrayList<SmsRep>(); 
    } 

    Uri uriSms = Uri.parse("content://sms/sent"); 
    Cursor cursor = context.getContentResolver().query(uriSms, null,null,null,null); 
    List<SmsRep> outboxSms = cursor2SmsArray(cursor); 

    if(!cursor.isClosed()) 
    { 
     cursor.close(); 
    } 

    return outboxSms; 
} 

И метод для обработки данных в отправленной коробке:

public static List<SmsRep> cursor2SmsArray(Cursor cursor) 
    { 
     if(null == cursor || 0 == cursor.getCount()) 
     { 
      return new ArrayList<SmsRep>(); 
     } 

     List<SmsRep> messages = new ArrayList<SmsRep>(); 

     try 
     { 
      for(cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) 
      { 
       SmsRep singleSms = new SmsRep(); 
       singleSms.id = cursor.getInt(cursor.getColumnIndexOrThrow("_id")); 
       singleSms.address = cursor.getString(cursor.getColumnIndexOrThrow("address")); 
       singleSms.timestamp = cursor.getLong(cursor.getColumnIndexOrThrow("date"))/1000; //### the sent time 
       singleSms.type = cursor.getInt(cursor.getColumnIndexOrThrow("type")); 
       singleSms.protocol = cursor.getInt(cursor.getColumnIndexOrThrow("protocol")); 

       /* 
       String smsSubject = cursor.getString(cursor.getColumnIndex("subject")); 
       byte[] subjByts = smsSubject.getBytes("UTF8"); 
       singleSms.subject = new String(subjByts, "UTF8"); 
       */ 


       String smsBody = cursor.getString(cursor.getColumnIndexOrThrow("body")); //### body 
       byte[] bodyBytes = smsBody.getBytes("UTF8"); 
       singleSms.body = TextUtils.htmlEncode(new String(bodyBytes, "UTF8")); //escape,handle '='    
       singleSms.deviceId = deviceId; 

       //singleSms.body = cursor.getString(cursor.getColumnIndexOrThrow("body")); 
       messages.add(singleSms); 
      } 

     } 
     catch (Exception e) 
     { 
      Log.e(TAG, e.getMessage()); 
     } 
     finally 
     { 
      cursor.close(); 
     } 

     return messages;   
} 

Определения от SmsRep:

public class SmsRep 
    { 
    static String separator ; 

    public int id; 
    public String address; 
    public long timestamp; 
    public int type; 
    public int protocol; 
    public String subject; 
    public String body; 
    public String deviceId; 

     public SmsRep() 
     { 
       // do nothing in ctor 
     } 


} 

Это то, что вы хотите :)

+0

Что такое содержимое SmsRep? – Billy

0

Мы можем получать уведомления, когда вы получаете SMS, но нет способа получить уведомление при отправке СМС.

+0

Есть ли у вас какие-либо источники? – Olli

+0

Ну .. мой опыт. Я постараюсь найти что-то. – Jonas

+0

есть предложения по получению данных? – Billy

-1
Uri uriSMS = Uri.parse("content://sms/sent"); 

    Cursor cur = getActivity().getContentResolver().query(uriSMS , null, null, null, null); 

    Cursor messagesCursor = getActivity().getContentResolver().query(uriSMS , new String[]{"_id", "address", "body", "person", "date",}, null, null, null); 


    if(messagesCursor.getCount() > 0) { 
     try { 
      while (messagesCursor.moveToNext()) 
      { 
       int x=messagesCursor.getInt(messagesCursor.getColumnIndex("_id")); 
       String address=messagesCursor.getString(messagesCursor.getColumnIndex("address")); 
       String body=messagesCursor.getString(messagesCursor.getColumnIndex("body")); 
       String person=messagesCursor.getString(messagesCursor.getColumnIndex("person")); 
       String date_=messagesCursor.getString(messagesCursor.getColumnIndex("date")); 

      } 
     } 
     catch(Exception ex) 
     { 

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