Android 学习之路 四大组件之Activity2 短信发送器案例

接上篇

1.目的

写短信发送器案例主要是为了落实A界面到B界面跳转的数据传输,及B界面关闭后的数据返回再显示这段逻辑,并进行多页面尝试开发。主要功能是输入号码,写入内容发送短信,我们这里主要添加的功能是,跳转到我们自己模拟的联系人页面,点击需要发送给的联系人,页面回转并拿到电话号码,同理,再实现一个插入短信大全内容的功能,将另一个页面的短信内容添加到主页面的发送框中,再点击发送,完成功能。

mainActivity

public class MainActivity extends AppCompatActivity {

    private EditText et_number;
    private TextView tv_content;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_number = findViewById(R.id.et_number);
        tv_content = findViewById(R.id.tv_content);

    }
    public void add(View v){

        //点击实现跳转
        Intent intent = new Intent(getApplicationContext(),ContactsActivity.class);
//        startActivity(intent);
        //如果点击按钮开启另一个activity 并且该页面关闭时需要回传数据 就是用这个方法开启
        startActivityForResult(intent,1);

    }
    public void insert(View v){
        //点击跳转到messageActivity
        Intent intent = new Intent(getApplicationContext(),MessageActivity.class);
        //开启需要返回数据的界面
        startActivityForResult(intent,2);

    }
    public void send(View v){
        String phone = et_number.getText().toString().trim();
        String content = tv_content.getText().toString().trim();
        SmsManager smsManager = SmsManager.getDefault();
        //destinationAddress 目标地址
        //scaddress 服务中心号码 null 默认
        //text要发送的内容
        smsManager.sendTextMessage(phone,null,content,null,null);
    }

    //当我们开启的跳转页面关闭时 会调用这个方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
                if(resultCode==10){
                String number = data.getStringExtra("number");
                et_number.setText(number);
                }else if(resultCode==20){
                    String message = data.getStringExtra("message");
                    tv_content.setText(message);
                }
    }
}

ContactsActivity 跳转页面到联系人页面(模拟)

public class ContactsActivity extends AppCompatActivity {


    private List<People> list;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contacts);

        //设置假数据
        list = new ArrayList<People>();
        for (int i=0;i<200;i++){
            People people = new People();
            people.setName("张三"+i);

            people.setNumber("110"+i);
            list.add(people);

        }


        ListView lv = findViewById(R.id.lv);
        lv.setAdapter(new myAdapter());
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //获得数据 将数据传回caller
                String number = list.get(position).getNumber();
                System.out.println(number);
                Intent intent = new Intent();
                intent.putExtra("number",number);
                //进行页面关闭 触发main页面的onActivityResult的方法

                setResult(10,intent);
                finish();

            }
        });




    }
    public class myAdapter extends BaseAdapter{


        @Override
        public int getCount() {
            return list.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.item_contacts,null);


            }else{
                view=convertView;
            }

            TextView tv_name = view.findViewById(R.id.tv_name);
            TextView tv_number = view.findViewById(R.id.tv_number);

                tv_name.setText(list.get(position).getName());
                tv_number.setText(list.get(position).getNumber());
            return view;
        }
    }
}

MessageActivity 短信大全的内容页面

public class MessageActivity extends AppCompatActivity {

    String objects[]={"不好意思,我在上课,一会儿给您回复","不好意思,我在外面,一会儿给您回复",
            "不好意思,我在约会,一会儿给您回复","不好意思,我在工作,一会儿给您回复"};
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_message);
        ListView lv_message = findViewById(R.id.lv_message);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.item_message,objects);

        lv_message.setAdapter(adapter);
        //设置点击事件
        lv_message.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //获得数据
                String message = objects[position];
                //用intent携带数据
                Intent intent = new Intent();
                intent.putExtra("message",message);
                //把携带的数据进行传递
                setResult(20,intent);
                //记得要关闭页面呢
                finish();
            }
        });
    }
}

还有个对象封装

public class People {

    private String name;
    private String number;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }
}

完成整个逻辑,这次我在模拟器调试好后,软磨硬泡(出于对俺们程序员的陌生与莫名的恐惧)用小伙伴手机来了次部署在真机上,体验一把,哇,简直不要太爽,这丝滑流畅~~ 我滴模拟器开到4.0都没这般丝滑,泪奔~~~

直接上图:

网上搜刮的apple小图标 区别下安卓本机的软件

                                                                             点击+号 进行页面跳转

点击任意模拟联系人 数据回显                                 同理插入短信

传递短信 点击发送即可被运营商扣除1毛钱,嘎嘎

注意:记得加短信发送权限(在小伙伴手机上部署后我发现没有发出去 然后取手机设置中打开了短信权限 正品的APP都会在第一次进入提示你是否开启权限,奈何我的盗版BUG尚多,只能手动打开了··)

··································································END··························································································

下篇总结Activity重要知识 下篇见

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值