短信发送器案例:
主要知识点:接收一个Activity关闭时的返回的数据 关闭一个Activity finish()
主要代码:
Intent intent = new Intent(this, ContacatActivity.class);
//startActivity(intent);
//注意:如果点击按钮开启了一个Activity 并且当开启的Activity关闭时 我想要他的数据用下面的方法开启Activity
startActivityForResult(intent, 10);
//把数据返回个调用者
Intent intent=new Intent();
intent.putExtra("phone",phone);
//可以吧结果返回给调用者 第一个为结果码,第二个为意图Intent
setResult(10,intent);
//关闭当前页面
finish();
//通过onActivityResult返回数据
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data){
//通过结果码判断数据来源
if (resultCode == 10) {
//说明数据是从ContacatActivity返回
String phone = data.getStringExtra("phone");
et_num.setText(phone);
} else if (resultCode == 20) {
//说明数据是从MobanActivity返回
String moban = data.getStringExtra("moban");
et_content.setText(moban);
}
super.onActivityResult(requestCode, resultCode, data);
}
全部代码:
public class MainActivity extends AppCompatActivity {
EditText et_num;
EditText et_content;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_num = findViewById(R.id.et_num);
et_content = findViewById(R.id.et_content);
}
public void click1(View view) {
Intent intent = new Intent(this, ContacatActivity.class);
//startActivity(intent);
//注意:如果点击按钮开启了一个Activity 并且当开启的Activity关闭时 我想要他的数据用下面的方法开启Activity
startActivityForResult(intent, 10);
}
public void click2(View view) {
Intent intent = new Intent(this, MobanActivity.class);
// //startActivity(intent);
//注意:如果点击按钮开启了一个Activity 并且当开启的Activity关闭时 我想要他的数据用下面的方法开启Activity
startActivityForResult(intent, 20);
}
public void send(View v) {
//获取发短信的号码和内容
String num = et_num.getText().toString().trim();
String content = et_content.getText().toString().trim();
//获取SmsManager实例
SmsManager smsManager = SmsManager.getDefault();
//如果短信过长 分条发送
ArrayList<String> d = smsManager.divideMessage(content);
for (String div : d) {
//第一个发送的地址(号码)第二个服务中心 默认null 第三个短信内容 第四个null
smsManager.sendTextMessage(num, null, div, null, null);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if (resultCode == 10) {
//说明数据是从ContacatActivity返回
String phone = data.getStringExtra("phone");
et_num.setText(phone);
} else if (resultCode == 20) {
//说明数据是从MobanActivity返回
String moban = data.getStringExtra("moban");
et_content.setText(moban);
}
super.onActivityResult(requestCode, resultCode, data);
}
}
public class ContacatActivity extends Activity {
List<Person> lists;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contacat);
ListView lv=findViewById(R.id.lv);
lists=new ArrayList<Person>();
for (int i=0;i<20;i++){
Person p=new Person();
p.setName("张三"+i);
p.setPhone("121"+i);
lists.add(p);
}
lv.setAdapter(new MyAdapter());
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//获取点中条目的数据
String phone=lists.get(i).getPhone();
//把数据返回个调用者
Intent intent=new Intent();
intent.putExtra("phone",phone);
//可以吧结果返回给调用者 第一个为结果码,第二个为意图Intent
setResult(10,intent);
//关闭当前页面
finish();
//把数据传给MainActivity
}
});
}
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
return lists.size();
}
@Override
public Object getItem(int i) {
return null;
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View v;
if (view == null){
v=View.inflate(getApplicationContext(),R.layout.contacat_item,null);
}else{
v=view;
}
TextView tv_name=v.findViewById(R.id.tv_name);
TextView tv_phone=v.findViewById(R.id.tv_phone);
tv_name.setText(lists.get(i).getName());
tv_phone.setText(lists.get(i).getPhone());
return v;
}
}
}
public class MobanActivity extends Activity {
String object[]={"我在开会","我在忙","saddw","sadw3afgrehfczg"};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contacat);
ListView lv=findViewById(R.id.lv);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),R.layout.item,object);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
//获取点中条目的数据
String moban=object[i];
//把数据返回个调用者
Intent intent=new Intent();
intent.putExtra("moban",moban);
//可以吧结果返回给调用者 第一个为结果码,第二个为意图Intent
setResult(20,intent);
//关闭当前页面
finish();
//把数据传给MainActivity
}
});
}