看了一些模拟器之间实现短信的文章。我也写一下。这样记得会更清晰一些。
①创建一个DEMO,我将它命名为SMSTest
②先来设计一个UI,这里使用的是AbsoluteLayout布局。
main.xml
<?xml version="1.0" encoding="utf-8"?> <AbsoluteLayout android:id="@+id/AbsoluteLayout01" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/myTextView01" android:layout_width="wrap_content" android:layout_height="26px" android:text="收件人" android:layout_x="6px" android:layout_y="21px" > </TextView> <Button android:id="@+id/myButton01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发送" android:layout_x="11px" android:layout_y="302px" > </Button> <EditText android:id="@+id/myEditText01" android:layout_width="200px" android:layout_height="49px" android:textSize="18sp" android:layout_x="108px" android:layout_y="10px" > </EditText> <EditText android:id="@+id/myEditText02" android:layout_width="fill_parent" android:layout_height="226px" android:textSize="18sp" android:layout_x="5px" android:layout_y="64px" > </EditText> </AbsoluteLayout>
③主程序SMSTest.java
package com.android.zhoufei;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.Intent;
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.TextView;
import android.widget.Toast;
public class SMSTest extends Activity {
//声明控件
Button myButton01;
EditText myEditText01;
EditText myEditText02;
TextView myTextView01;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//获取资源
myButton01=(Button)findViewById(R.id.myButton01);
myTextView01=(TextView)findViewById(R.id.myTextView01);
myEditText01=(EditText)findViewById(R.id.myEditText01);
myEditText02=(EditText)findViewById(R.id.myEditText02);
//点击发送按钮后的事件
myButton01.setOnClickListener(new OnClickListener(){
public void onClick(View v){
//获取收件人和信息内容
String mgAddress=(myEditText01).getText().toString();
String mgContent=(myEditText02).getText().toString();
//构建一个取得default instance的SMSManager对象
SmsManager smsManager=SmsManager.getDefault();
//检查输入的收件人和信息内容是否为空
if(mgAddress.trim().length()!=0&&mgContent.trim().length()!=0){
try{
PendingIntent pintent=PendingIntent.getBroadcast(SMSTest.this, 0, new Intent(), 0);
smsManager.sendTextMessage(mgAddress, null, mgContent, pintent, null);
}catch(Exception e){
e.getStackTrace();
}
Toast.makeText(SMSTest.this, "发送成功", Toast.LENGTH_LONG).show();
}else{
Toast.makeText(SMSTest.this, "发送失败", Toast.LENGTH_LONG).show();
}
}
});
}
}
在这里应该注意的是SmsManager这个对象是用来处理发送文本,数据,短信的。获得这个对象需要通过SmsManager.getDefalut()这个方法来调用。
④修改一下androidmanifest.xml添加一下发送短消息的权限.
添加这句<uses-permission android:name="android.permission.SEND_SMS"/>,就OK了。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.zhoufei" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".SMSTest" 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> <uses-sdk android:minSdkVersion="7" /> <uses-permission android:name="android.permission.SEND_SMS"></uses-permission> </manifest>
⑤运行一下吧。
需要打开连个模拟器
运行:emulator -data <filename>
eg:emulator -data d:\test\
如果sdk的版本低的话,应该显示不出中文来。恩,应该是这样。