Android接收和发送短信处理_Android

关于短信接收处理方面,当前已经有一些app做的比较好了,比如发给手机发验证码验证的问题,很多app在手机接收到验证码后,不需要输入,就直接可以跳过验证界面,这就是用到了对接收到的短信的处理。至于短信的发送,也没什么好说的了。在此也只是附上一个小实例。

效果图:

MainActivity:

import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast; 

public class MainActivity extends Activity { 

  private TextView sender;
  private TextView content;
  private IntentFilter receiveFilter;
  private MessageReceiver messageReceiver; 

  private EditText to;
  private EditText msgInput;
  private Button send;
  private IntentFilter sendFilter;
  private SendStatusReceiver sendStatusReceiver; 

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    sender = (TextView) findViewById(R.id.sender);
    content = (TextView) findViewById(R.id.content);
    to = (EditText) findViewById(R.id.to);
    msgInput = (EditText) findViewById(R.id.msg_input);
    send = (Button) findViewById(R.id.send); 

    //为接收短信设置要监听的广播
    receiveFilter = new IntentFilter();
    receiveFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
    messageReceiver = new MessageReceiver();
    registerReceiver(messageReceiver, receiveFilter); 

    //为发送短信设置要监听的广播
    sendFilter = new IntentFilter();
    sendFilter.addAction("SENT_SMS_ACTION");
    sendStatusReceiver = new SendStatusReceiver();
    registerReceiver(sendStatusReceiver, sendFilter); 

    send.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View v) {
        //发送短信
        //并使用sendTextMessage的第四个参数对短信的发送状态进行监控
        SmsManager smsManager = SmsManager.getDefault();
        Intent sentIntent = new Intent("SENT_SMS_ACTION");
        PendingIntent pi = PendingIntent.getBroadcast(
            MainActivity.this, 0, sentIntent, 0);
        smsManager.sendTextMessage(to.getText().toString(), null,
            msgInput.getText().toString(), pi, null);
      }
    });
  } 

  @Override
  protected void onDestroy() {
    super.onDestroy();
    //在Activity摧毁的时候停止监听
    unregisterReceiver(messageReceiver);
    unregisterReceiver(sendStatusReceiver);
  } 

  class MessageReceiver extends BroadcastReceiver { 

    @Override
    public void onReceive(Context context, Intent intent) {
      Bundle bundle = intent.getExtras();
      //使用pdu秘钥来提取一个pdus数组
      Object[] pdus = (Object[]) bundle.get("pdus"); 

      SmsMessage[] messages = new SmsMessage[pdus.length];
      for (int i = 0; i < messages.length; i++) {
        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
      } 

      //获取发送方号码
      String address = messages[0].getOriginatingAddress(); 

      //获取短信内容
      String fullMessage = "";
      for (SmsMessage message : messages) {
        fullMessage += message.getMessageBody();
      }
      sender.setText(address);
      content.setText(fullMessage);
    } 

  } 

  class SendStatusReceiver extends BroadcastReceiver { 

    @Override
    public void onReceive(Context context, Intent intent) {
      if (getResultCode() == RESULT_OK) {
        //发送成功
        Toast.makeText(context, "Send succeeded", Toast.LENGTH_LONG)
            .show();
      } else {
        //发送失败
        Toast.makeText(context, "Send failed", Toast.LENGTH_LONG)
            .show();
      }
    } 

  } 

} 

activity_main:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical" > 

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp" > 

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_vertical"
      android:padding="10dp"
      android:text="From:" /> 

    <TextView
      android:id="@+id/sender"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_vertical" />
  </LinearLayout> 

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp" > 

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_vertical"
      android:padding="10dp"
      android:text="Content:" /> 

    <TextView
      android:id="@+id/content"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_vertical" />
  </LinearLayout> 

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp" > 

    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_vertical"
      android:padding="10dp"
      android:text="To:" /> 

    <EditText
      android:id="@+id/to"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_gravity="center_vertical"
      android:layout_weight="1" />
  </LinearLayout> 

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp" > 

    <EditText
      android:id="@+id/msg_input"
      android:layout_width="0dp"
      android:layout_height="wrap_content"
      android:layout_gravity="center_vertical"
      android:layout_weight="1" /> 

    <Button
      android:id="@+id/send"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_gravity="center_vertical"
      android:text="Send" />
  </LinearLayout> 

</LinearLayout>

AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.smstest"
  android:versionCode="1"
  android:versionName="1.0" > 

  <uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="17" /> 

  //接受短信
  <uses-permission android:name="android.permission.RECEIVE_SMS" />
  //发送短信
  <uses-permission android:name="android.permission.SEND_SMS" /> 

  <application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
      android:name="com.example.smstest.MainActivity"
      android:label="@string/app_name" >
      <intent-filter>
        <action android:name="android.intent.action.MAIN" /> 

        <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
    </activity>
  </application> 

</manifest> 

以上就是本文的全部内容,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索Android接收短信
Android发送短信
android 短信发送接收、手机无法接收发送短信、手机不能接收发送短信、短信能接收不能发送、at指令发送接收短信,以便于您获取更多的相关知识。

时间: 2024-10-22 16:17:02

Android接收和发送短信处理_Android的相关文章

Android接收和发送短信的实现代码_Android

Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信. <receiver android:name=".smsReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </in

Android接收和发送短信的实现代码

Android收到短信时会广播android.provider.Telephony.SMS_RECEIVED消息,因此只要定义一个Receiver,收听该消息,就能接收短信. <receiver android:name=".smsReceiver" > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </in

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

每一部手机都具有短信接收和发送功能,下面我们通过代码来实现接收和发送短信功能. 一.接收短信 1.创建内部广播接收器类,接收系统发出的短信广播 2.从获得的内容中解析出短信发送者和短信内容 3.在Activity中注册广播 4.添加接收短信权限 下面放上具体的代码  activity_main.xml文件用于显示短信发送者号码和显示短信内容 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout

Android使用Intent发送短信的实现方法_Android

本文实例讲述了Android使用Intent发送短信的实现方法.分享给大家供大家参考,具体如下: 在一个Activity中使用Intent发送短信 package com.zhuguangwei; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.

Android使用Intent发送短信的实现方法

本文实例讲述了Android使用Intent发送短信的实现方法.分享给大家供大家参考,具体如下: 在一个Activity中使用Intent发送短信 package com.zhuguangwei; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.

Android使用第三方服务器Bmob实现发送短信验证码_Android

调用Bmob第三方服务器实现短信验证的功能,大致思路如下: 随机产生6位数字,然后调用Bmob的请求短发函数发送者六位数到服务器,然后服务器给指定手机发送这6位验证码,然后感觉用户输入的数字进行判断,如果输入的和发送的相等,则验证成功. 第一步.请求验证码: SimpleDateFormat format =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sendTime = format.format(new Date());

Android如何集成极光短信验证_Android

先借助Android studio工具新建一个新的空项目. 步骤一(获取appkey) 1.在极光官网平台上新建短信应用(根据要求包名和应用名称填写好) 2.获取得到Jpush_AppKey 步骤二 (导入第三方库和so文件) 1.用Android studio打开应用 2.切换应用状态Android为Project状态 3.在libs文件夹下把对应的jar文件拷入  然后as libraries 步骤三(初始化以及调用) 1.新建Application初始化 public class MyAp

利用smsmanager实现后台发送短信示例_Android

复制代码 代码如下: public void sendServiceSms(Context mContext,String content) {try {SmsManager manager = SmsManager.getDefault();PendingIntent sentIntent = PendingIntent.getBroadcast(mContext, 0,new Intent(SMS_SENT_TEST_ACTION), 0);manager.sendTextMessage("

Android发送短信方法实例详解_Android

本文实例讲述了Android发送短信方法.分享给大家供大家参考,具体如下: 短信和打电话一样,都是android手机的基本功能,下面以实例说明android如何实现发送短信的功能. 程序如下所示: import java.util.regex.Matcher; import java.util.regex.Pattern; import android.app.Activity; import android.app.PendingIntent; import android.content.I