• 发送短信


    SMSActivity.java

    package src.sms;

    import android.app.Activity;
    import android.os.Bundle;
    import android.telephony.SmsManager;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;

    public class SMSActivity extends Activity {

    private String m_currentTelNumber;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    //设置短信UI
    //设置拨号按钮的事件监听器
    Button smsButton = (Button) findViewById(R.id.smsButton);
    smsButton.setOnClickListener(new SmsButtonListener());
    }

    /**
    * 使用SmsMessage来发送短信
    */
    private class SmsButtonListener implements OnClickListener{

    @Override
    public void onClick(View v) {
    m_currentTelNumber = "09xxxxxxxxxxx";

    EditText messageBody = (EditText) findViewById(R.id.sms_message);
    //调用一个短信管理器
    SmsManager smsManager = SmsManager.getDefault();
    //使用短信管理传送信息
    smsManager.sendTextMessage(m_currentTelNumber, null, messageBody.getText().toString(), null, null);
    //调用一个Toast信息确定函数有被执行
    String toastMessage = String.format("To:%1$s\nMessage Body:%2$s", m_currentTelNumber,messageBody.getText().toString());
    Toast.makeText(SMSActivity.this, toastMessage, Toast.LENGTH_LONG).show();
    }

    }

    }

    广播机制,监控短信接收

    SmsReceiver.java

    package src.sms.receiver;

    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.telephony.SmsMessage;
    import android.widget.Toast;

    /**
    * 监控短信接收 SmsReceiver实现BroadcastReceiver,
    * 当Android系统广播SMS_RECEIVED时就接收,并产生一个信息确认有接收到
    */
    public class SmsReceiver extends BroadcastReceiver {
    // 设置ACTION字符串来比对intent是否为接收短信
    private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";

    @Override
    public void onReceive(Context context, Intent intent) {
    // 只有属于接收短信的内容才需要处理
    if (intent != null && intent.getAction() != null
    && (ACTION.compareToIgnoreCase(intent.getAction()) == 0)) {
    // 从Intent 中读取pdu的资料
    Object[] pduData = (Object[]) intent.getExtras().get("pdus");
    // 依照pduData的数组大小来添加一个短信的数组
    SmsMessage[] smsArray = new SmsMessage[pduData.length];
    // 将数据写入短信数组并且列出内容
    for (int i = 0; i < pduData.length; i++) {
    smsArray[i] = SmsMessage.createFromPdu((byte[]) pduData[i]);
    String toastMessage = String
    .format("Message clip #%3$d, \n From : %2$s, \n Message Body: %1$s",
    smsArray[i].getMessageBody(),
    smsArray[i].getOriginatingAddress(),
    i);
    Toast.makeText(context, toastMessage, Toast.LENGTH_LONG).show();
    }
    }
    }
    }

    注册广播机制和添加权限

    AndroidManifest.xml

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

    <uses-sdk android:minSdkVersion="8" />
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>

    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
    android:name=".SMSActivity"
    android:label="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <receiver android:name=".receiver.SmsReceiver">
    <intent-filter>
    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
    </intent-filter>
    </receiver>
    </application>

    </manifest>

  • 相关阅读:
    socket通信原理
    socket通信基础内容
    内核中断过程
    爬虫基础模块
    关于多个运算符的问题
    前戏
    js扩展
    加密
    django之form
    Django
  • 原文地址:https://www.cnblogs.com/xingmeng/p/2455754.html
Copyright © 2020-2023  润新知