【问题标题】:How can I read unread sms from inbox in android programatically?如何以编程方式从 android 的收件箱中读取未读短信?
【发布时间】:2013-04-03 22:09:55
【问题描述】:

您好,我是 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");

    }
}

【问题讨论】:

  • @SamirMangroliya: Oh really?
  • 我听不懂……你说什么?
  • 我已经看过了。但我不知道如何在我的应用程序中实现。请帮助我
  • 我看不出您的问题与您的代码有任何关联。这是一个愚蠢的问题,就像问我有四个轮子我怎么能造一辆汽车。

标签: java android sms


【解决方案1】:

它真的很有效...用 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);
}

}

然后在你的 Main Activity 中调用这个方法

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

【讨论】:

    【解决方案2】:

    如果你是扩展DroidGap,onCreate不需要setContentView,DroidGap会默认显示webView。


    创建一个类说 ReadSMS 具有读取未读短信的方法并将 ReadSMS 类对象作为 javascriptInterfcae 添加到 droidGap webview,如下所示:
    Class ReadSMS{
    
    public ReadSMS(){
    }
    
    public String[] readUnreadSMS(){
    return smsArray;
    }
    
    }
    


    在 SMSActivity 的 onCreate 中添加:
    ReadSMS readSms = new ReadSMS();
    appView.addJavascriptInterface(readSms , "ReadUnreadSMS");
    super.loadUrl("file:///android_asset/www/index.html");
    


    然后在 Javascript 中,您可以访问 ReadSMS 类中的 readUnreadSMS(),如下所示:
    <script>
      $(function(){
            var smsArray[] = window.ReadUnreadSMS.readUnreadSMS();
      });
    </script>
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多