2017-08-08 56 views
-3

由于广播接收器每当发送新消息时都会像收到新消息一样监听新消息如何获取消息及其详细信息。Android:获取发送的消息(发件箱)?

public class incomingSms extends BroadcastReceiver 
    { 
     final SmsManager sms = SmsManager.getDefault(); 

     public void onReceive(Context context, Intent intent) { 

      // Retrieves a map of extended data from the intent. 
      final Bundle bundle = intent.getExtras(); 


      try { 

       if (bundle != null) { 

        final Object[] pdusObj = (Object[]) bundle.get("pdus"); 

        for (int i = 0; i < pdusObj.length; i++) { 

         SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); 

         String message = currentMessage.getDisplayMessageBody(); 
         String phoneNumber = currentMessage.getDisplayOriginatingAddress(); 

         Date date = new Date(currentMessage.getTimestampMillis()); 
         String formattedDate = new SimpleDateFormat("MM/dd/yyyy").format(date); 

         long time=date.getTime(); 
         String formattedTime = new SimpleDateFormat("hh:mm:ss").format(time); 

         Toast.makeText(context,"recieved sms "+"senderNum: "+ phoneNumber + ", message: " + message+ " , date:" + formattedDate + ",time: "+formattedTime , Toast.LENGTH_LONG).show(); 



         MyDBHandler db = new MyDBHandler(context); 

         int f_id=1; 
         db.insertDat2(new DataSetGet(f_id,phoneNumber,message,formattedDate,formattedTime)); 
    //     addData(phoneNumber,message,formattedDate,formattedTime); 

        } // end for loop 
       } // bundle is null 

      } catch (Exception e) { 
       Log.e("SmsReceiver", "Exception smsReceiver" +e); 

      } 


      SmsMessage[] msgs = null; 


      if (bundle != null) { 

       Object[] pdus = (Object[]) bundle.get("pdus"); 
       msgs = new SmsMessage[pdus.length]; 

       for (int i=0; i < msgs.length; i++) { 

        msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 

        String no = "SMS from " + msgs[i].getOriginatingAddress() + " : "; 
        String message= msgs[i].getMessageBody().toString(); 
        Toast.makeText(context,"sent message "+"no: "+no+" message: "+ message,Toast.LENGTH_LONG).show(); 
       } 

      } 


     } 

当我发送信息时,现在的烤面包没有出现。

  1. 运行的应用程序。
  2. 发送消息给一个号码。
  3. 吐司没有出现。
  4. 收到消息,从数
  5. 现在发送消息的面包出现
+2

嗨,欢迎来到堆栈溢出。有关如何提出问题并相应地更新您的问题的详细信息,请参见[问问]链接 。 –

回答

0

清单文件补充一点:

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

将这个代码在活动文件:

// Create Sent box URI 
Uri sentURI = Uri.parse("content://sms/sent"); 

// List required columns 
String[] reqCols = new String[] { "_id", "address", "body" }; 

// Get Content Resolver object, which will deal with Content Provider 
ContentResolver cr = getContentResolver(); 

// Fetch Sent SMS Message from Built-in Content Provider 
Cursor c = cr.query(sentURI, reqCols, null, null, null); 

你将得到所有在这个接收器中发送的消息。现在你可以在sqlite数据库中存储消息SE。

+0

谢谢,但这不是我所需要的。我已经完成了这部分。广播接收器用于收听传入的消息,但我询问发件箱,传出的消息 – fatima

+0

@fatima你可以请检查我的代码。 android.provider.Telephony.SMS_RECEIVED 越来越没有得到收件箱消息, – dipali

+0

由于它是工作,但发件箱中的消息只有当我接收消息从数仅则得到发送消息 – fatima