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

android接收和发送短信的xml配置

 
阅读更多

<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]-->

andoird 2010-03-23 15:59:00 阅读 115 评论 1 字号: 大中

1.android 发送短信
                android API
中提供了 smsManager 类处理短信。其中的 sendTextMessage(num, null, content, pend, null) 函数就是发送
       
短信的方法。第一个参数为目标者手机号、第二个参数为短信中心地址 null 为默认地址、
       
第三个参数短信的文本内容、第四个参数是一个 intent 会把发送结果带回。第五个参数不知,一般为 null
              
               
一个应用程序要具备发送短信功能,需要在 androidManifest.xml 中加入 android.permission.SEND_SMS 权限。
              
               
在模拟器中发送中文会接收方出现乱码的问题,但是在真机中,就不会出现乱码的情况了。所以
       
开发者只需要正常开发短信功能,不需要编码转换。

接收短信也是比较方便的,主要是继承 BroadcaseReceiver , 覆盖 onReceive 函数:

1:
相关类:
android.content.BroadcastReceiver
android.telephony.gsm.SmsMessage;

2:example code.

public class MessageDemo extends BroadcastReceiver {
    private static final String strACT = "android.provider.Telephony.SMS_RECEIVED";

public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(strACT)) {
StringBuilder sb = new StringBuilder();
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] msg = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
msg[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage currMsg : msg) {
sb.append("From:");
sb.append(currMsg.getDisplayOriginatingAddress());
sb.append("\nMessage:");
sb.append(currMsg.getDisplayMessageBody());
}
}
}

}
}
3:
相关的配置

修改 AndroidManifest.xml ,在 Activity 下添加 receiver 节点:
<receiver android:name="MessageDemo">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
随后在 application 下添加节点:
<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>

4:
使用 BroadReceiver 的弊端
查看 BroadReceiver sdk reference , 可以了解到所有的 BroadReceiver 对短信的接收是无顺序的状态 ,即使是使用了 Ordered broadcasts 对于同等优先级别的 BroadReceiver , 也会产生无顺序的行为。
所以下面介绍另一种接收短信的行为,包括其中可以进行短信的删除。

5
:从数据库端监听 sms 的收发
//
如下 主要用于内部数据库改变,向外面的界面 (Activity) 做反应
class SMSHandler extends Handler
{
    public void handleMessage(Message msg)
    {
        //Handle message
    }
}

//
对收到短消息后,做出的处理 , 这里直接删除,并没有反应到界面,所以上面的 handleMessage 是空的。
class SMSObserver extends ContentObserver
{
    private Handler m_handle = null;

    public SMSObserver(Handler handle)
    {
        super(handle);
        m_handle = handle;
    }

    public void onChange(boolean bSelfChange)
    {
        super.onChange(bSelfChange);

        //Send message to Activity
        Message msg = new Message();
        msg.obj = "xxxxxxxxxx";
        m_handle.sendMessage(msg);

String strUriInbox = "content://sms/inbox";
Uri uriSms = Uri.parse(strUriInbox);  //If you want to access all SMS, just replace the uri string to "content://sms/"
Cursor c = mContext.getContentResolver().query(uriSms, null, null, null, null);
// delete all sms here when every new sms occures.
while (c.moveToNext())
{  
       //Read the contents of the SMS;
       for(int i; i < c.getColumnCount(); i++)
        {
            String strColumnName = c.getColumnName(i);
            String strColumnValue = c.getString(i);
        }


       //Delete the SMS
        String pid = c.getString(1);  //Get thread id;
       String uri = "content://sms/conversations/" + pid;
       mContext.getContentResolver().delete(Uri.parse(uri), null, null);      
  
}

        


    }
}

//
把基本类功能性地应用起来
ContentResolver contentResolver = getContentResolver();// Context
环境下 getContentResolver()
Handler handler = new SMSHandler();
ContentObserver m_SMSObserver = new SMSObserver(handler);
contentResolver.registerContentObserver(Uri.parse("content://sms/inbox"),true, m_SMSObserver);
//Register to observe SMS in outbox,we can observe SMS in other location by changing Uri string, such as inbox, sent, draft, outbox, etc.)

// some Available Uri string  for sms.
/*
  String strUriInbox = "content://sms/inbox";//SMS_INBOX:1
  String strUriFailed = "content://sms/failed";//SMS_FAILED:2
  String strUriQueued = "content://sms/queued";//SMS_QUEUED:3
  String strUriSent = "content://sms/sent";//SMS_SENT:4
  String strUriDraft = "content://sms/draft";//SMS_DRAFT:5
  String strUriOutbox = "content://sms/outbox";//SMS_OUTBOX:6
  String strUriUndelivered = "content://sms/undelivered";//SMS_UNDELIVERED
  String strUriAll = "content://sms/all";//SMS_ALL
  String strUriConversations = "content://sms/conversations";//you can delete one conversation by thread_id
  String strUriAll = "content://sms"//you can delete one message by _id
*/

REMEBER: must request following permission
1) Read SMS
    <uses-permssion android:name="android.permission.READ_SMS" />
2) Delete/Modify/Send SMS
    <uses-permssion android:name="android.permission.WRITE_SMS" />
in AndroidManifest.xml

 

分享到:
评论

相关推荐

    android接收和发送短信

    在Android平台上,发送和接收短信是一项常见的功能,主要涉及到`SMSManager`类和`BroadcastReceiver`组件。下面将详细介绍这两个核心知识点。 1. **发送短信**: - `SMSManager`是Android SDK提供的一个类,它负责...

    详解Android短信的发送和广播接收实现短信的监听

    总结来说,实现Android短信的发送和接收功能,需要合理配置清单文件权限、正确注册和实现广播接收器,以及设计用户友好的发送界面,并且在适当时刻处理运行时权限。这些知识点的掌握对于开发能够处理短信收发功能的...

    Android发送短信程序

    - `sentIntent`: 用于接收发送结果的BroadcastReceiver Intent,当短信发送成功或失败时将被触发。 - `deliveryIntent`: 用于接收送达结果的BroadcastReceiver Intent,当短信被接收方接收后将被触发。 #### 三、...

    Android获取手机短信

    通常,短信存储在`content://sms/`这个URI下,分为收件箱(inbox)、草稿箱(drafts)、发件箱(sent)和已发送(outbox)四个类别。 ```java ContentResolver contentResolver = getContentResolver(); Uri smsUri...

    Android短信发送程序

    在Android平台上,开发一个短信发送程序是一个常见的任务,它涉及到Android SDK中的许多核心组件和API。这个程序的主要目的是允许用户向其他设备发送短信,这里特别提到了在两个模拟器之间进行信息传递。以下是对这...

    Android Studio自动发短信源码

    总的来说,"Android Studio自动发短信源码"项目涉及到的知识点包括Android Studio的开发环境、权限管理、Intent机制、`SMSManager`的使用以及Service的运用。理解并掌握这些概念,将有助于你构建自己的自动发短信...

    android demo,SMS短信通知。

    在AndroidManifest.xml文件中,你需要声明`&lt;uses-permission&gt;`标签来获取发送和接收短信的权限。例如: ```xml &lt;uses-permission android:name="android.permission.SEND_SMS" /&gt; &lt;uses-permission android:name...

    短信接收器

    在Android平台上,短信接收器(SMS Receiver)是Android广播接收者(BroadcastReceiver)的一个实例,用于监听并处理系统发出的短信到达的广播事件。本文将详细介绍如何使用Android Eclipse开发环境来创建一个短信...

    Android案例:拨打电话+发送短信。利用Intent意图

    总结起来,这个Android案例展示了如何利用Intent来拨打电话和发送短信。通过理解Intent的工作原理和权限管理,开发者可以轻松地将这些功能集成到自己的应用程序中,为用户提供更丰富的交互体验。在实际开发中,根据...

    android 发送短信,调用系统和秘密发送

    在Android平台上,发送短信是常见的功能之一,可以用于通知、验证或者其他交互式应用。这篇文章将深入探讨如何在Android中调用系统短信服务以及如何实现秘密发送短信。 首先,调用系统短信服务通常涉及到使用...

    Android代码-安卓手机定时发送短信多条短信同时发布.zip

    5. **权限管理**: 在AndroidManifest.xml中,需要添加发送短信所需的权限 `&lt;uses-permission android:name="android.permission.SEND_SMS" /&gt;`,否则应用将无法发送短信。 6. **线程管理**: 发送短信可能需要较长的...

    Android代码-一个短信应用源码.zip

    - Android提供了SmsManager类,用于处理短信的发送和接收。开发者可以通过调用其方法,如`sendTextMessage()`,来实现短信的发送功能。 5. **ContentProvider**: - 对于读取和存储短信,应用可能需要访问系统的...

    Android SMSNotify Android 短信通知源码

    在Android系统中,处理短信事件通常涉及到`SmsManager`类,它是Android SDK提供的用于发送和接收短信的接口。`SMSNotify`可能通过注册广播接收器(`BroadcastReceiver`)监听`ACTION_SMS_RECEIVED`广播,来实现实时...

    简单的安卓短信发送程序

    此方法需要收件人的电话号码、短信内容和一个PendingIntent,用于接收发送结果。 5. **权限请求**: 自Android 6.0 (API level 23)起,运行时权限管理引入,即使在Manifest中声明了SEND_SMS权限,应用仍需在运行时...

    Android-SMS302短信或者来电转发到Email

    总结来说,"Android-SMS302短信或者来电转发到Email"项目涉及到的主要知识点有:Android权限管理、BroadcastReceiver的使用、ContentResolver操作短信和通话记录、SMTP邮件发送、以及用户体验优化。开发者需要掌握...

    一个android短信程序.源码

    使用Android的布局文件(如activity_main.xml)和UI组件(如EditText、Button、ListView等)来构建发送、接收和收藏短信的界面。RecyclerView常用于展示短信列表,因为它具有高效的滚动性能。 6. **自定义Adapter**...

    Android工程源代码-手机短信发送

    开发者可以通过这个类的`sendTextMessage()`方法来发送文本短信,指定接收者的电话号码和短信内容。 7. **BroadcastReceiver**: 在某些情况下,可能需要监听短信发送的状态,比如成功、失败或者被阻止。这时,可以...

    android实战 查看短信的猫(android studio源程序工程)

    在这个项目中,可能有一个XML文件用于创建列表视图,其中包含短信条目的各个字段,如发件人、接收时间、短信内容等。 4. **Intent**:Intent在Android中用于启动其他组件或传递数据。在这个应用中,可能使用Intent...

    android 自动回复短信

    在开发这样一个应用时,我们需要在`AndroidManifest.xml`文件中声明相应的权限,包括读取和写入短信的权限。这可以通过添加以下代码实现: ```xml &lt;uses-permission android:name="android.permission.READ_SMS" /&gt;...

    android 短信和电话拦截

    在Android平台上,短信和电话拦截是一项重要的功能,它允许开发者创建应用程序来管理用户接收到的通信。本项目涉及的是一个已经编写完成的Android应用,它能够实现短信和电话的拦截功能,用户导入到Eclipse IDE中...

Global site tag (gtag.js) - Google Analytics