您的位置:首页 > 移动开发 > Android开发

Android的短信的使用

2015-12-30 13:51 465 查看
主要使用android系统接收短信的广播

接收广播使用的action是android.provider.Telephony.SMS_RECEIVED

我们也可以发送短信,使用的类是:

SmsManager manager=SmsManager.getDefault();

manager.setTextMessage(目的地址,null,内容,PendingIntent ,null);

PendingIntent 可以当短信发出时,触发广播,新的Activity,服务Service。

<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>

<?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>

package com.example.smstest;

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 EditText to;

private EditText msgInput;

private Button send;

private IntentFilter receiveFilter;

private MessageReceiver messageReceiver;

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");

receiveFilter.setPriority(100);

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) {

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();

unregisterReceiver(messageReceiver);

unregisterReceiver(sendStatusReceiver);

}

class MessageReceiver extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

Bundle bundle = intent.getExtras();

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);

abortBroadcast();

}

}

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();

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: