【问题标题】:android: push sms As recieved in inbox using getContentResolverandroid: 使用 getContentResolver 在收件箱中推送短信
【发布时间】:2014-08-27 07:14:14
【问题描述】:

收到短信后,我已将该短信保存在我的数据库中 现在我想把短信移到收件箱

我使用了这段代码,但它移动了我发送的代码 请帮我把它作为收到的短信移动

ListViewLogItem lm = listArray.get(position);
                long datein = Long.parseLong(lm.getInboxTime());
                    Uri uri = Uri.parse("content://sms/");
                    ContentValues cv2 = new ContentValues();
                    cv2.put("address","+"+lm.getNumber());
                    cv2.put("date", datein);
                    cv2.put("read", 1);
                    cv2.put("type", 2);
                    cv2.put("body", lm.getSms());


                    getContentResolver().insert(Uri.parse("content://sms/inbox"), cv2);

【问题讨论】:

    标签: android sms inbox


    【解决方案1】:

    变化:

    cv2.put("type", 2);
    

    收件人:

    cv2.put("type", 1);
    

    因为:

    public static final int MESSAGE_TYPE_INBOX = 1;
    public static final int MESSAGE_TYPE_SENT = 2;
    

    【讨论】:

      【解决方案2】:

      您可以使用以下方法从收件箱中删除短信,

      private void deleteMessage()
      {
      Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, null); 
      //c.moveToFirst(); 
      
      while (c.moveToNext())
      {
          System.out.println("Inside if loop");
      
          try
          {
              String address = c.getString(2);
              String MobileNumber = mainmenu.getParameterData().getMobileNumber().trim();
      
              //Log.i( LOGTAG, MobileNumber + "," + address );
      
              Log.i( LOGTAG, c.getString(2) );
      
      
              if ( address.trim().equals( MobileNumber ) )
              {
                  String pid = c.getString(1);
                  String uri = "content://sms/conversations/" + pid;
                  getContentResolver().delete(Uri.parse(uri), null, null);
                  stopSelf();
              }
          }
          catch (Exception e)
          {
              e.printStackTrace();
          }
      } 
      

      }

      【讨论】:

        【解决方案3】:

        使用 thisvalues.put("status", SmsManager.STATUS_ON_ICC_UNREAD); 。状态可以是已读/未读/已读之类的任何内容。我已将其保留为未读。

        查看消息状态

        values.put("read", true);  // As Read
        

        values.put("read", false); // As Un Read
        
        public class Message {
        
        
        
        final Uri SMS_INBOX = Uri.parse("content://sms/inbox");
        @SuppressWarnings("unused")
        private ContentResolver resolver;
        
        public Message(ContentResolver ConResolver){
            resolver = ConResolver;
        }
        
        public String getMessage(int batas) {
              Cursor cur = resolver.query(SMS_INBOX, null, null, null,null);
              String sms = "Message >> \n";
              int hitung = 0;
              while (cur.moveToNext()) {
                  sms += "From :" + cur.getString(2) + " : " + cur.getString(11)+"\n";
                  if(hitung == batas)
                      break;
                  hitung++;
              }
              return sms;
        }
        
        public int getMessageCountUnread(){
            Cursor c = resolver.query(SMS_INBOX, null, "read = 0", null, null);
            int unreadMessagesCount = c.getCount();
            c.deactivate();
            return unreadMessagesCount;
        }
        
        public String getMessageAll(){
              Cursor cur = resolver.query(SMS_INBOX, null, null, null,null);
              String sms = "Message >> \n";
              while (cur.moveToNext()) {
                  sms += "From :" + cur.getString(2) + " : " + cur.getString(11)+"\n";
              }
              return sms;
        }
        
        public String getMessageUnread() {
            Cursor cur = resolver.query(SMS_INBOX, null, null, null,null);
              String sms = "Message >> \n";
              int hitung = 0;
              while (cur.moveToNext()) {
                  sms += "From :" + cur.getString(2) + " : " + cur.getString(11)+"\n";
                  if(hitung == getMessageCountUnread())
                      break;
                  hitung++;
              }
              return sms;
        }
        
        public void setMessageStatusRead() {
            ContentValues values = new ContentValues();
            values.put("read",true);
            resolver.update(SMS_INBOX,values, "_id="+SmsMessageId, null);
        }
        
        }
        

        【讨论】:

          猜你喜欢
          • 2012-05-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-03
          相关资源
          最近更新 更多