02_android入门_实现短信/彩信发送的功能

时间:2022-02-22 08:54:01

一、短息发送实现要点:

1)必须要在AndroidManifest.xml中添加发送短信权限<uses-permission android:name="android.permission.SEND_SMS" />

2)查找控件:findViewById(R.id.控件id);

3)监听按钮事件:控件.setOnClickListener(this),实现OnClickListener接口

4)获取editText里的值:getText();


二、发送短信思路:

1) 获取短信号码及内容

2) 判断短信号码及内容是否为空

3) 获取短息的管理器对象

3) 如果你的字符数大于了70自动拆分处理

4) 发送短信的处理


三、实现效果

02_android入门_实现短信/彩信发送的功能 


02_android入门_实现短信/彩信发送的功能


02_android入门_实现短信/彩信发送的功能         02_android入门_实现短信/彩信发送的功能       02_android入门_实现短信/彩信发送的功能


以上 有短信和彩信的效果图

下面具体看一下短信实现的代码:

1.布局文件中所需要的字符串资源string.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">lesson02</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>
<string name="sms_tip_phone">请输入您要发送的手机号码</string>
<string name="sms_tip_content">请输入您要发送的信息内容</string>
<string name="tip_sms">输入短息的信息</string>
<string name="send_sms">发送短信</string>
<string name="error_sms_content">您发送的短信号码或者短信内容不能为空</string>
</resources>

2.布局文件 activity_sms.xml

<RelativeLayout
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"
tools:context="${packageName}.${activityClass}">
<!-- 提示输入电话号码信息 -->
<TextView
android:id="@+id/tv_tip_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/sms_tip_phone"/>

<!-- 输入手机号码的信息 -->
<EditText
android:id="@+id/et_phone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_tip_phone"
android:layout_alignParentLeft="true"
android:inputType="phone"/>

<!-- 提示输入短信信息 -->
<TextView
android:id="@+id/tv_tip_sms_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/sms_tip_content"
android:layout_below="@+id/et_phone"/>

<!-- 输入短息的信息 -->
<EditText
android:id="@+id/et_sms_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_tip_sms_content"
android:lines="5"
android:hint="@string/tip_sms"/>

<!-- 发送信息的按钮 -->
<Button
android:id="@+id/send_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/et_sms_content"
android:text="@string/send_sms"/>

</RelativeLayout>

3.SmsActivity代码

package com.example.lesson02_sms;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
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 implements OnClickListener{
//声明控件
private EditText et_phone;
private EditText et_content;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//设置显示的视图
setContentView(R.layout.activity_sms);
//获取控件对象
et_phone = (EditText) findViewById(R.id.et_phone);
et_content = (EditText) findViewById(R.id.et_sms_content);
//获取按钮的控件对象
Button send_btn = (Button) findViewById(R.id.send_btn);
//注册监听事件
send_btn.setOnClickListener(this);
}

/**
* 按钮点击事件处理的方法
*/
@Override
public void onClick(View v) {
//获取控件的id值
int id = v.getId();
//根据id判断点击的控件
switch (id) {
case R.id.send_btn:
//获取短信号码
String phone = et_phone.getText().toString();
//获取短信的内容
String content = et_content.getText().toString();
//判断短信号码和内容是否为空
if(TextUtils.isEmpty(phone)||TextUtils.isEmpty(content)){
//吐司效果
Toast.makeText(this,R.string.error_sms_content, Toast.LENGTH_SHORT).show();
}else{
//获取短息的管理器对象
SmsManager smsManager = SmsManager.getDefault();

//如果你的字符数大于了70就开始拆了.
ArrayList<String> smscontents = smsManager.divideMessage(content);

//遍历发送信息
for(int i=0;i<smscontents.size();i++){
//发送短信的处理
smsManager.sendTextMessage(phone, null, smscontents.get(i), null, null);
}
//吐司效果
Toast.makeText(this, "发送信息成功", Toast.LENGTH_LONG).show();
}
break;
default:
break;
}
}
}

4.项目清单文件AndroidManifest.xml

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

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />

<!-- 发送短信的权限 -->
<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.lesson02_sms.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>
</application>

</manifest>


对于发彩信的实现,主要是调用系统的意图来实现的,下面贴出activity中主要实现代码:希望同学们自己实现一下.

                               //获取外部存储文件目录
File file = Environment.getExternalStorageDirectory();//目录要通过类的方法获取
//创建意图
Intent intent = new Intent(Intent.ACTION_SEND);
//创建附带数据
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+file.getPath()+"/DCIM/Camera/20140502_112359.jpg"));
//发送的地址
intent.putExtra("address", "13103120533");
//发送主题
intent.putExtra("subject", "it's subject");
//发送内容
intent.putExtra("sms_body", "it's content");
//发送的类型
intent.setType("image/jpeg");
//执行意图
SmsImgActivity.this.startActivity(intent);


以上代码仅供参考......