一、短息发送实现要点:
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) 发送短信的处理
三、实现效果
以上 有短信和彩信的效果图
下面具体看一下短信实现的代码:
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);
以上代码仅供参考......