`
Arthur_Wen
  • 浏览: 29962 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android中读取短信

阅读更多
引用

原文地址:http://hi.baidu.com/miuchen/blog/item/d5313b34bf35b887a61e1288.html

import android.app.Activity;
import android.content.ContentValues;
import android.database.ContentObserver;
import android.database.Cursor;
import android.database.sqlite.SQLiteException;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.TextView;

public class mini extends Activity {
/** *//** Called when the activity is first created. */
private static final String LOG_TAG = "Sms Query";

//入口是onCreate
@Override
public void onCreate(Bundle savedInstanceState) {
   // super.onCreate(savedInstanceState);
   // setContentView(R.layout.main);
   super.onCreate(savedInstanceState); 
   TextView tv = new TextView(this);

   tv.setText("Hello, Android");
  
   tv.setText(getSmsAndSendBack());
    
   setContentView(tv);
}
/** *//**
* 读取短信
* @return
*/
public String getSmsAndSendBack()
{
   String[] projection = new String[] {
     "_id",
     "address",
     "person",
     "body"
    };
   StringBuilder str=new StringBuilder();
   try{
    Cursor myCursor = managedQuery(Uri.parse("content://sms/inbox"),
      projection,
      null, null , "date desc");
    str.append(processResults(myCursor, true));  
    str.append("getContactsAndSendBack has executed!");
/**//*    myCursor = managedQuery(Uri.parse("content://sms/inbox"),
      new String[] { "_id", "address", "read" },
      " address=? and read=?",
      new String[] { "12345678901", "0" }, "date desc");*/
   
   }
   catch (SQLiteException ex)
   {
    Log.d(LOG_TAG, ex.getMessage());
   }
   return str.toString();
}
/** *//**
* 处理短信结果
* @param cur
* @param all 用来判断是读一条还是全部读。后来没有用all,可以无视
*/
private StringBuilder processResults(Cursor cur, boolean all) {
   // TODO Auto-generated method stub
   StringBuilder str=new StringBuilder();
   if (cur.moveToFirst()) {

         String name; 
         String phoneNumber;       
         String sms;
         
         
         int nameColumn = cur.getColumnIndex("person");
         int phoneColumn = cur.getColumnIndex("address");
         int smsColumn = cur.getColumnIndex("body");
         
         do {
             // Get the field values
             name = cur.getString(nameColumn);             
             phoneNumber = cur.getString(phoneColumn);
             sms = cur.getString(smsColumn);
             
             str.append("{");
             str.append(name+",");
             str.append(phoneNumber+",");
             str.append(sms);
             str.append("}");
             

             
             if (null==sms)
             sms="";
             
             
/**//*             if (all)
             mView.loadUrl("javascript:navigator.SmsManager.droidAddContact('" + name + "','" + phoneNumber + "','" + sms +"')");             
             else
             mView.loadUrl("javascript:navigator.sms.droidFoundContact('" + name + "','" + phoneNumber + "','" + sms +"')");*/
                          
         } while (cur.moveToNext());
/**//*         if (all)
         mView.loadUrl("javascript:navigator.SmsManager.droidDone()");
         else
         mView.loadUrl("javascript:navigator.sms.droidDone();");*/
     }
     else
     {
     str.append("no result!");
/**//*     if(all)
        mView.loadUrl("javascript:navigator.SmsManager.fail()");
     else
        mView.loadUrl("javascript:navigator.sms.fail('None found!')");*/
     }

   return str;
}//processResults
}



public final static String SMS_URI_ALL =  "content://sms/"; //0   
public final static String SMS_URI_INBOX = "content://sms/inbox";//1   
public final static String SMS_URI_SEND = "content://sms/sent";//2   
public final static String SMS_URI_DRAFT = "content://sms/draft";//3   
public final static String SMS_URI_OUTBOX = "content://sms/outbox";//4   
public final static String SMS_URI_FAILED = "content://sms/failed";//5   
public final static String SMS_URI_QUEUED = "content://sms/queued";//6   



    _id => 短消息序号 如100  
    thread_id => 对话的序号 如100  
    address => 发件人地址,手机号.如+8613811810000  
    person => 发件人,返回一个数字就是联系人列表里的序号,陌生人为null  
    date => 日期  long型。如1256539465022  
    protocol => 协议 0 SMS_RPOTO, 1 MMS_PROTO   
    read => 是否阅读 0未读, 1已读   
    status => 状态 -1接收,0 complete, 64 pending, 128 failed   
    type => 类型 1是接收到的,2是已发出   
    body => 短消息内容   
    service_center => 短信服务中心号码编号。如+8613800755500  
    记得在AndroidManifest.xml中加入android.permission.READ_SMS这个permission

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

分享到:
评论
3 楼 yangmaolinpl 2013-06-26  
谢谢,不了解学习下。
2 楼 Arthur_Wen 2011-03-24  
jieshuo 写道
谢谢gg分享了,感觉很好啊,只是我还有个小问题,怎么把短信输出到文本文件?

自己把短信信息写进文本文件不就行了嘛
1 楼 jieshuo 2011-03-21  
谢谢gg分享了,感觉很好啊,只是我还有个小问题,怎么把短信输出到文本文件?

相关推荐

    Android获取手机短信

    下面将详细介绍如何在Android中获取短信。 一、权限配置 在AndroidManifest.xml文件中,你需要添加以下权限来访问短信: ```xml &lt;uses-permission android:name="android.permission.READ_SMS" /&gt; ...

    android中获取短信信息、通话记录和通讯录信息JUnit测试版

    在Android开发中,获取短信信息、通话记录以及通讯录数据是常见的需求,这些功能对于构建一个功能完善的手机应用至关重要。本项目实现了一个JUnit测试版本,专门针对这些功能进行单元测试,确保代码的稳定性和可靠性...

    读取android手机内所有短信

    本文将详细介绍如何在Android中读取短信,以及涉及到的相关知识点。 首先,为了读取短信,我们需要使用Android提供的`Telephony.Sms`内容提供者。这个内容提供者允许应用程序访问手机中的短信数据库。以下是一些...

    Android: 读取短信

    在Android系统中,读取短信是一项常见的功能,尤其对于开发者来说,可能需要通过程序来获取短信数据进行分析或实现特定的业务逻辑。本篇将详细讲解如何在Android中读取短信,以及涉及到的相关知识点。 首先,我们...

    android 获取手机短信内容并及时刷新短信

    在`onReceive`方法中,你可以再次调用上述获取短信内容的代码,以获取最新的短信列表。 至于如何将这些短信上传到后台,通常我们会使用HTTP客户端库(如OkHttp或Retrofit)来发起网络请求。首先,你需要创建一个...

    Android即时读取短信内容

    在`onReceive()`方法中,通过`pdus`参数获取短信数据,并使用`SmsMessage`类解析: ```java SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent); for (SmsMessage smsMessage : ...

    获取Android手机中所有短信的实现代码

    以上就是从给定的代码中解析出的Android获取短信的主要知识点,包括Content Resolver、Content Provider Uri、查询操作、Cursor使用以及数据处理等。这些知识对于开发Android应用,特别是涉及到读取或管理用户数据的...

    android获取短信中心号

    在Android系统中,获取短信中心号码是开发过程中可能遇到的需求,这主要涉及到与短信服务相关的API交互。短信中心号码(SMSC,Short Message Service Center)是短信传递过程中的一个重要环节,它负责存储、转发和...

    android 获取手机电话号码短信内容

    获取短信内容需要用到`SmsManager`类和`ContentResolver`。同样,你需要在`AndroidManifest.xml`中声明`READ_SMS`权限: ```xml &lt;uses-permission android:name="android.permission.READ_SMS" /&gt; ``` 接着,通过`...

    Android MIUI通知类短信权限的坑

    Android 系统中,MIUI 通知类短信权限是一个特殊的权限,它不同于一般的短信权限。MIUI 的设计让开发者感到困惑,因为它不遵循 Android 的标准动态权限申请流程。MIUI 的 READ_SMS 权限申请不弹出提示框,让用户不...

    Android读取短信和联系人

    以下代码展示了如何获取短信: ```java ContentResolver contentResolver = getContentResolver(); Uri smsUri = Uri.parse("content://sms/inbox"); // 查询收件箱中的短信 Cursor cursor = contentResolver.query...

    android 获取短信和通话记录信息

    在Android平台上,获取短信和通话记录信息是...总结,获取短信和通话记录信息是Android开发中的常见任务,涉及到内容提供者、Cursor和权限管理等关键概念。正确理解和使用这些技术对于构建功能丰富的通讯应用至关重要。

    android读取短信验证码自动填入

    首先,我们需要获取短信权限。在AndroidManifest.xml文件中添加读取短信的权限: ```xml &lt;uses-permission android:name="android.permission.READ_SMS" /&gt; ``` 由于Android 6.0(API级别23)及以上版本需要在运行时...

    Android通讯录姓名手机号获取,打电话发短信功能。

    以上就是如何在Android Studio中获取通讯录姓名和手机号,以及实现打电话和发送短信的基本步骤。在实际开发中,还需要考虑权限处理的用户体验,比如提供合理的提示信息,并处理权限未被授予的情况。同时,针对不同...

    Android通讯录管理(获取联系人、通话记录、短信消息)

    获取短信需请求`READ_SMS`权限。 - 权限申请:在AndroidManifest.xml中声明`READ_SMS`权限。 - 查询短信:使用`ContentResolver.query()`,指定`Telephony.Sms.Inbox.CONTENT_URI`或`Telephony.Sms.Outbox.CONTENT...

    Android 获取系统联系人并发送短信demo

    在Android中,获取系统联系人的过程涉及读取存储在设备上的联系人数据。这通常通过ContentResolver和ContactsContract类来完成。首先,ContentResolver是Android系统提供的接口,它负责与ContentProvider进行交互,...

    Android如何实现接收和发送短信

    2、从获得的内容中解析出短信发送者和短信内容 3、在Activity中注册广播 4、添加接收短信权限 下面放上具体的代码  activity_main.xml文件用于显示短信发送者号码和显示短信内容 &lt;?xml version=1.0 encoding=...

    获取短信内容

    在Android系统中,获取短信内容是一项常见的功能,例如在开发某些需要验证用户手机的APP时。这个主题主要涉及Android的Content Provider、权限管理和SQLite数据库的知识点。以下将详细阐述这些内容。 首先,Android...

    android 获取短信中心号 Demo

    在Android系统中,获取短信中心号码是一个常见的任务,特别是在开发与短信相关的应用程序时。这个"android 获取短信中心号 Demo"提供了实现这一功能的实例代码,为开发者提供了学习和实践的平台。下面,我们将深入...

Global site tag (gtag.js) - Google Analytics