public class MainActivity extends AppCompatActivity {
private EditText et_number;
private EditText et_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_content = (EditText) findViewById(R.id.et_content);
}
// 点击按钮跳转到发送短信模板页面
public void insertsms(View v) {
Intent intent = new Intent(this, SmsTemplateActivity.class);
startActivityForResult(intent, 2);
}
// 点击按钮 跳转到contactActivity页面
public void add(View v) {
Intent intent = new Intent(this, ContactActivity.class);
// startActivity(intent);
/* 小细节 如果点击按钮 开启了另外一Activity
并且当开启的这个Activity关闭的时候,
我想要这个开启Activity的数据,
用下面这个方法开启Activity
*/
startActivityForResult(intent, 1);
}
//当我开启的Activity页面关闭的时候 这个方法就调用
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
// 代表请求ContactActivity这个页面的数据
String phone = data.getStringExtra("phone");
et_number.setText(phone);
} else if (requestCode == 2) {
// 代表请求 短信模板页面的数据
String smsContent = data.getStringExtra("smscontent");
et_content.setText(smsContent);
}
// if (resultCode == 10) {
// // 说明数据是从 ContactActivity返回的
// String phone = data.getStringExtra("phone");
// et_number.setText(phone);
// } else if (resultCode == 20) {
// // 说明数据是从 SmsTempalte返回的
// String smsContent = data.getStringExtra("smscontent");
// et_content.setText(smsContent);
// }
}
// 点击按钮 发送短信
public void send(View v) {
//1 获取发送短信的号码 和发送短信的内容
String number = et_number.getText().toString().trim();
String content = et_content.getText().toString().trim();
//2 获取到smsmanager的实例
SmsManager smsManager = SmsManager.getDefault();
// 短信内容可能会过长,所以需要分割?
ArrayList<String> divideMessages = smsManager.divideMessage(content);
for (String div : divideMessages) {
/**
* destinationAddress 发送给谁
* scAddress 服务中心号码
* text 要发送的内容
*/
smsManager.sendTextMessage(number, null, div, null, null);
}
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.a43_sms_sender.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_content"
android:layout_width="match_parent"
android:layout_height="200dp"
android:gravity="top"
android:hint="请输入发送短信的内容"/>
<Button
android:onClick="insertsms"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="插入短信模板"/>
<Button
android:onClick="send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送"/>
</LinearLayout>
public class ContactActivity extends AppCompatActivity {
private List<Person> lists;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contact); //加载布局
//1 找到控件
ListView lv = (ListView) findViewById(R.id.lv);
//2 准备listview 要显示的数据 模拟点假数据
lists = new ArrayList<>();
for (int i = 0; i < 20; i++) {
Person p = new Person();
p.setName("张三" + i);
p.setPhone("11" + i);
lists.add(p);
}
//3 展示数据
lv.setAdapter(new MyAdapter());
//4 给listview 设置点击事件
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//5 获取我点中条目的数据 数据在哪里存着呢 就去哪里取
String phone = lists.get(position).getPhone();
//5.0 把数据返回给调用者
Intent intent = new Intent();
intent.putExtra("phone", phone);
// 把结果返回给调用者
setResult(10, intent);
// 关闭当前页面
finish();
}
});
}
// 后退键
@Override
public void onBackPressed() {
super.onBackPressed();
}
private class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return lists.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view;
if (convertView == null) {
view = View.inflate(getApplicationContext(), R.layout.contact_item, null);
} else {
view = convertView;
}
//1 找到我们在item中定义的控件 用来显示数据
TextView tv_name = (TextView) view.findViewById(R.id.tv_name);
TextView tv_phone = (TextView) view.findViewById(R.id.tv_phone);
//2 展示数据
tv_name.setText(lists.get(position).getName());
tv_phone.setText(lists.get(position).getPhone());
return view;
}
}
}
public class SmsTemplateActivity extends AppCompatActivity {
String objects[] ={"我在吃饭,请稍后联系","我在开会,请稍后联系","我在上课,请稍后联系","我在打代码,请稍后联系","我在约会,请稍后联系"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sms_template);
//1 找到lv
ListView lv = (ListView) findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.smstemplate_item, objects);
//2 显示数据
lv.setAdapter(adapter);
//3 设置lv的条目的点击事件
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//4 取出点击条目的数据
String smsContent = objects[position];
//5 把smsContent返回给调用者
Intent intent = new Intent();
intent.putExtra("smscontent", smsContent);
setResult(20, intent);
//调用finish
finish();
}
});
}
}