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;@Overrideprotected 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();        }    });}//TODOprotected 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();        }    }}@Overrideprotected 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);}@Overrideprotected void onPause() {    super.onPause();    unregisterReceiver(receiver);}

}

权限的声明:

更多相关文章

  1. Android(安卓)广播 使用方法
  2. Android读取手机短信
  3. Android(安卓)SMS(一) —— 读取短信
  4. Android(安卓)SMS(一) —— 读取短信
  5. Android中Handler机制
  6. Android(安卓)动态发送广播接收
  7. android中读取短信
  8. Android发送短信
  9. 【Android】Android(安卓)4.0 无法接收开机广播的问题

随机推荐

  1. Android 中的布局方式之线性布局
  2. 极光推送使用实例(三) Android客户端
  3. Android内存泄漏监测(MAT)及解决办法
  4. android 学习笔记4——post请求+线程控制
  5. 不可或缺 Windows Native (25) - C++: wi
  6. android 8.1.0 添加系统service
  7. android 使用xml selector设置按钮点击效
  8. android framework增加新的系统服务
  9. Android帮助文档.exe(第1,2,3部分)提供下载
  10. Unbuntu下Android studio报Unable to rec