创建一个新工程LearnSendSMS |
发短信部分代码 |
在androidManifest.xml中添加发送短信的权限代码
|
<uses-permission android:name="android.permission.WRITE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" />
|
Activity_main.xml代码如下: |
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:background="#ffcecbff" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:id="@+id/textView" android:text="写一个新消息" android:layout_gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/textViewPhoneNumber" android:text="电话号码" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/editTextPhoneNo" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="phone" android:hint="输入电话号码如:13959556666" /> <TextView android:id="@+id/textViewMessage" android:text="短信内容" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <EditText android:id="@+id/editTextSMS" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="textMultiLine" android:hint="请输入要发送的短信内容" android:text="测试发送的短信内容" /> <Button android:layout_gravity="center_horizontal" android:id="@+id/btnSendSMS" android:text="发送" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
|
MainActivity.java的代码 |
package com.czg.com.learnsendsms; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.telephony.SmsManager; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { Button sendSmsBtn; EditText toPhoneNumber; EditText smsMessageET; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); sendSmsBtn = (Button) findViewById(R.id.btnSendSMS); toPhoneNumber = (EditText) findViewById(R.id.editTextPhoneNo); smsMessageET = (EditText) findViewById(R.id.editTextSMS); sendSmsBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { sendSms(); } }); } private void sendSms() { String toPhone = toPhoneNumber.getText().toString(); String smsMessage = smsMessageET.getText().toString(); try { SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(toPhone, null, smsMessage, null, null); Toast.makeText(this, "短信已发送", Toast.LENGTH_LONG).show(); } catch (Exception e) { e.printStackTrace(); } } } |
收短信部分代码 |
创建一个SmsBroadcastReceiver广播接收器用于接收系统发出收到短信的广播 |
SmsBroadcastReceiver.java |
package com.czg.com.learnsendsms; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; import android.widget.Toast; import java.text.SimpleDateFormat; import java.util.Date; /** * Created by Administrator on 2016/1/22. */ public class SmsBroadcastReceiver extends BroadcastReceiver { public static final String SMS_BUNDLE = "pdus"; @Override public void onReceive(Context context, Intent intent) { Bundle intentExtras = intent.getExtras(); if(intentExtras != null) { Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE); String smsMessageStr = ""; for(int i = 0; i < sms.length; i++) { SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]); String smsBody = smsMessage.getMessageBody().toString(); String address = smsMessage.getOriginatingAddress(); long timeMillis = smsMessage.getTimestampMillis(); Date date = new Date(timeMillis); SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy"); String dateText = format.format(date); smsMessageStr += address + " at " + "\t" + dateText + "\n"; smsMessageStr += smsBody + "\n"; } Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show(); } } } |
在androidManifest.xml中添加收短信的权限代码
|
<uses-permission android:name="android.permission.READ_SMS" /> <uses-permission android:name="android.permission.RECEIVE_SMS" />
|
在androidManifest.xml中注册广播接收器
|
<receiver android:name=".SmsBroadcastReceiver" android:exported="true" > <intent-filter android:priority="998" > <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
|
源码下载:https://yunpan.cn/crxPCNjHsDY6G 访问密码 28ec