Android(安卓)day_09-02 (Activity 短信发送器案例)
16lz
2021-01-26
短信发送器案例:
主要知识点:接收一个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 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 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(); 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 adapter = new ArrayAdapter(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 } }); }
更多相关文章
- 一句话锁定MySQL数据占用元凶
- 安卓四大组件之——ContentProvider学习
- Android底部fragment互相跳转
- android 数据存储——SharedPreferences,有代码实现,简单易懂
- Android中View和ViewGroup事件分发拦截机制完美分析
- ViewModels 和 LiveData:模式 +反模式
- Android(摩托)HttpURLConnection getInputStream()堵塞
- Android-Room自定义类型
- Android手写数据库框架设计(删改查)