簡體   English   中英

如何以編程方式從android中的收件箱中讀取未讀短信?

[英]How can I read unread sms from inbox in android programatically?

嗨,我是Android應用程序開發的新手,我在android中開發了一個簡單的應用程序。 在我的應用程序中,我必須添加一個新功能。

我想從android的收件箱中讀取短信。 我搜索並應用了一些代碼但沒有用,我沒有得到結果。 以下代碼是我的第一個活動代碼。 它將執行並轉到索引頁面並正常工作。 在這種情況下,我想從收件箱中讀取未讀短信。 在哪里我想編寫代碼以及我想編寫哪些類型的代碼....請非常明確地給我答案為什么因為我是一個非常新的android。

所以請幫助我。 提前致謝。

碼:

 import org.apache.cordova.*;  
 import android.os.Bundle;
 public class SMSActivity extends DroidGap 
 {
     /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       super.setIntegerProperty("splashscreen", R.drawable.fg_logo);
       super.loadUrl("file:///android_asset/www/index.html");

    }
}

它真的有用......用Message.java保存

package mzsay.com.provider;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
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);
}

}

而不是在您的主要活動中使用此方法調用

public synchronized String getMessage(int batas) {
    Message ambilpesan = new Message(context.getContentResolver());
            //this a return of All unread from your Inbox
    return ambilpesan.getMessageUnread();
}

如果你正在擴展DroidGap,不需要在onCreate中執行setContentView,DroidGap將默認顯示webView。


創建一個類,說ReadSMS有讀取未讀短信的方法,並將ReadSMS類對象作為javascriptInterfcae添加到droidGap webview,如下所示:

 Class ReadSMS{ public ReadSMS(){ } public String[] readUnreadSMS(){ return smsArray; } } 


在SMSActivity的onCreate中添加:

<script>
  $(function(){
        var smsArray[] = window.ReadUnreadSMS.readUnreadSMS();
  });
</script>


然后在Javascript中,您可以在ReadSMS類中訪問readUnreadSMS(),如下所示:

 <script> $(function(){ var smsArray[] = window.ReadUnreadSMS.readUnreadSMS(); }); </script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM