android短信demo

package com.example.demo;

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.net.Uri;

import android.os.Bundle;

import android.telephony.SmsManager;

import android.telephony.SmsMessage;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

public class MainActivity extends Activity {

private Button btnsend;
private EditText etContent;
private MyReciever receiver;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnsend=(Button)findViewById(R.id.button1);
    etContent=(EditText)findViewById(R.id.editText1);
    btnsend.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            sendSMS();
        }
    });
}
//TODO
protected void sendSMS() {
    //系统短信发送信心
    /*
     *
     */
    Intent intent=new Intent(Intent.ACTION_SENDTO);
    Uri data=Uri.parse("smsto:"+5554);
    intent.setData(data);
    intent.putExtra("sms_body", etContent.getText());
    startActivity(intent);
    /*
     * 发信息二
     */

// Intent intent01=new Intent(Intent.ACTION_SENDTO);

// intent01.setType(“vnd.android-dir/mms-sms”);

// intent01.putExtra(“address”, “155555251552”);

// intent01.putExtra(“sms_body”, etContent.getText().toString());

// startActivity(intent01);

// 2)利用代码发送短信,申请权限,利用代码发送短信不会写入系统的数据表

/*

* 短信的接收。android系统后台有一个服务(Service专门用来接收短消息,当有新的

*

*/

SmsManager manager=SmsManager.getDefault();

Intent intent02=new Intent(“com.tarena.SENT”);

PendingIntent pi1=PendingIntent.getBroadcast(this,0,intent02,0);

//系统某个时候会去调用系统个从自己手机发出了(到达了基站时候)就是pi1执行了

Intent intent03=new Intent(“com.tarena.DELIVERY”);

PendingIntent pi2=PendingIntent.getBroadcast(this,0, intent03, 0);

//代表信息发送到了对面手机收到的pi2

    manager.sendTextMessage("151511211",null, "xihuanniyijinghenjiule",
            pi1, pi2);
}
public class MyReciever extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        String action=intent.getAction();
        if(("com.tarena.SENT").equals(action)){
            Log.d("TAG", "短信发送成功了"+System.currentTimeMillis());
        }
        if("com.tarena.DELIVERY".equals(action)){
            Log.d("TAG", "对方已经收到短信啦"+System.currentTimeMillis());
        }
        if("android.provider.Telephony.SMS_RECEIVED".equals(action)){
            //处理短消息
            Bundle bundle=intent.getExtras();
            Object[] pdus=(Object[]) bundle.get("pdus");
            StringBuilder sb=new StringBuilder();
            String number="";
            //把一个一个pdus转为一段段的短消息
            for(int i=0;i<pdus.length;i++){
                SmsMessage message=SmsMessage.createFromPdu((byte[]) pdus[i]);
                sb.append(message.getDisplayMessageBody());
                number=message.getDisplayOriginatingAddress();
            }
            Log.i("TAG", "发送方电话:"+number+"发送内容"+sb);
            //有短信这条广播不再继续下发android.provider.Telephoney.sms_RECEIVED
            /*
             * 必须设定权限RECEiVE_SMS
             * 设置较高的优先级
             * 如果不希望系统的短信程序接收短信,就执行abortBroadcst广播就停止下发同时,
             * 不会写入系统的数据库
             */
            abortBroadcast();
        }
    }

}
@Override
protected void onResume() {
    super.onResume();
    receiver=new MyReciever();
    IntentFilter filter=new IntentFilter();
    filter.addAction("com.tarena.SENT");
    filter.addAction("com.tarena.DELIVERY");
    filter.addAction("android.provider.Telephony.SMS_RECEIVED");
    filter.setPriority(1001);
    registerReceiver(receiver, filter);
}
@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(receiver);
}

}

权限的声明:

时间: 2024-10-20 12:47:21

android短信demo的相关文章

Android短信监听(三)——利用Loader实现短信监听

MainActivity如下: package cc.c; import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.app.LoaderManager.LoaderCallbacks; import android.content.Context; import android.content.Loader; import android.database.Curs

Android短信监听(二)——利用ContentObserver实现短信监听

MainActivity如下: package cc.testsmslistener; import cc.testsmslistener.SMSContentObserver.MessageListener; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.widget.TextView; import android.app.Activity; /** *

Android短信监听(一)——利用BroadcastReceiver实现短信监听

MainActivity如下: package cc.testsmsbroadcastreceiver; import cc.testsmsbroadcastreceiver.SMSBroadcastReceiver.MessageListener; import android.os.Bundle; import android.widget.TextView; import android.app.Activity; /** * Demo描述: * 利用BroadcastReceiver实现

Android短信收到,语音播报

发送短信功能界面 /** * 发送短信Demo * * @description: * @author ldm * @date 2016-4-22 上午9:07:53 */ public class SmsActivity extends Activity implements OnClickListener { public static final String SMS_RECIPIENT_EXTRA = "com.ldm.study.SMS_RECIPIENT"; public

Android短信彩信收发流程(应用层)

下图为ComposeMessageActivity中confirmSendMessageIfNeeded部分的信息发送流程.主要以接收者有效性的确认为主,然后转向sendMessage方法进行发送. ComposeMessageActivity.sendMessage从下图可以看出,在这个方法中,主要做的事是确认手机状态的有效性.最终调用WorkingMessage的send方法进行信息的发送.  WorkingMessage.send从下图可以看出,在本方法中,对于不同类型的消息,分别调用不同

Android -- 短信

背景                                                                                           主要代码                                                                                      发送按钮的监听器: phone_number_editText = (EditText) findViewById(R.id.phon

初识安卓小程序(Android短信发送器)

首先,先创建一个安卓项目(我的版本是4.4.2的),名字为"短信发送器" 然后在res文件夹下找到layout文件夹,找到activity_main.xml或fragment_main.xml,在里面输入或拖拽按钮 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tool

Android短信插入器源码

package com.examp.createsms; import android.app.Activity; import android.content.ContentResolver; import android.content.ContentValues; import android.net.Uri; import android.os.Bundle; public class MainActivity extends Activity { @Override protected

Android 短信的还原

上篇文章讲到<Android 短信的备份>,本文主要实现Android 短信的还原,即是将一条 布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" andr