总结实现步骤
(1)画 mainActivity页面
<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:orientation="vertical" tools:context=".MainActivity" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <EditText android:id="@+id/et_number" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入联系人好码" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@id/et_number" android:layout_alignParentRight="true" android:onClick="add" android:text="+" /> </RelativeLayout> <EditText android:id="@+id/et_sms_content" android:layout_width="match_parent" android:layout_height="250dp" android:gravity="top" android:hint="请输入发送短信的内容" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="insert" android:text="插入短信模板" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="click" android:text="发送短信" /> </LinearLayout>
(2) 画联系人页面 用一个listview展示就可以了
(3)写mainActivity的逻辑 主要代码
public class MainActivity extends Activity { private EditText et_number; private EditText et_sms_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //[1]获取我们关心的控件 et_number = (EditText) findViewById(R.id.et_number); et_sms_content = (EditText) findViewById(R.id.et_sms_content); } //点击按钮 跳转到短信模板页面 public void insert(View v){ Intent intent = new Intent(this,SmsTemplateActivity.class); //☆☆☆开启Activity有2种方式 //(1)如果想要开启的Activity的界面的数据 用 startActivityForResult(); //(2)如果就是简简单单页面的跳转 就用startActivity() startActivityForResult(intent, 2); } //点击+ 按钮 跳转到 联系人页面 public void add(View v) { //[1]创建意图对象 Intent intent = new Intent(this,ContactActivity.class); //[2]开启Activity // startActivity(intent); //[3]小细节 ☆☆☆☆ 如果一个页面开启另外一个页面 并且当开启的这个页面关闭的时候 还要另外一个页面的数据 使用下面这个方法开启Activity startActivityForResult(intent, 1); } //点击按钮实现发送短信的逻辑 public void click(View v) { String number = et_number.getText().toString().trim(); String content = et_sms_content.getText().toString().trim(); //[1]获取smsManager的实例 SmsManager smsManager = SmsManager.getDefault(); //[1.1]如果短信内容过过多 发不出去 分条发送 ArrayList<String> divideMessages = smsManager.divideMessage(content); for (String div : divideMessages) { //[2]发送短信数据 smsManager.sendTextMessage(number, null, div, null, null); } } //当我们开启的Activity的页面关闭的时候这个方法会调用 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1) { //代表我要请求 ContactActivity的数据 String phone = data.getStringExtra("name"); et_number.setText(phone); }else if (requestCode == 2) { //代表我要请求SmsTemplateActivity 的数据 String smscontent = data.getStringExtra("smscontent"); et_sms_content.setText(smscontent); } /*if (resultCode == 10) { //说明数据是由 ContactActivity返回 String phone = data.getStringExtra("name"); et_number.setText(phone); }else if (resultCode == 20) { //说明数据是由SmsTemplateActivity返回 String smscontent = data.getStringExtra("smscontent"); et_sms_content.setText(smscontent); } */ super.onActivityResult(requestCode, resultCode, data); } }
(4)写短信模板页面 也是用一个listview展示即可
(5)短信模板页面主要代码 如下
public class SmsTemplateActivity extends Activity { String objects[] = {"我在开会,请稍后联系","我在吃饭,请稍后联系","我在打代码,请稍后联系","我在开车,请稍后联系","我在约会,请稍后联系"}; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_template); //[1]找到lv控件 ListView lv = (ListView) findViewById(R.id.lv); //[2]创建数据适配器 ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.item, objects); //[3]把数据展示到listview上 lv.setAdapter(adapter); //[4]给lv设置点击事件 lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { //[5]获取我们点中条目的数据 String smscontent = objects[position]; //[6]把这个数据返回给调用者 Intent intent = new Intent(); intent.putExtra("smscontent", smscontent); //[7]通过这个方法把数据返回给调用者 setResult(20, intent); //[8]要记得调用finish finish(); } }); } }
(6)实现发送短信的功能
//[1]获取smsManager的实例 SmsManager smsManager = SmsManager.getDefault(); //[1.1]如果短信内容过过多 发不出去 分条发送 ArrayList<String> divideMessages = smsManager.divideMessage(content); for (String div : divideMessages) { //[2]发送短信数据 smsManager.sendTextMessage(number, null, div, null, null); }
(7)记得要加上发送短信的权限
android.permission.SEND_SMS