Android 短信大全、短信发送器案例

一、找到ListView

1.布局中设置一个ListView

2.MainActivity中找到控件

二、设置数据

1.定义一个String数组objects,将复制的祝福语放入数组中

2.建一个ListView要显示的每个条目的布局:item

3.设置数据

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,R.layout.item,objects);

4.设置适配器

lv.setAdapter(adapter);

5.给ListView设置点击事件

lv.setOnItemClickListener(new OnItemClickListener(){

    //当ListView的一个条目被点击的时候调用
    @Override
    public void onItemClick(AdapterView<?> parent,View view,int position,long id){

        //【6】把点击条目的数据取出来
        String content = object[position];

        //【7】跳转到发送短信页面,根据短信应用的清单配置
        /*
            <intent-filter>
                <action android:name="android.intent.action.SEND"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <data android:mimeType="text/plain"/>
            </intent-filter>
        */
        Intent intene = new Intent();
        //【7.1】设置action
        intent.setAction("android.intent.action.SEND");
        //【7.2】添加category
        intent.addCategory("android.intent.category.DEFAULT");
        //【7.3】设置type
        intent.setType("text/plain");
        //【7.4】传递数据
        intent.putExtra("sms_body",content);    //通过查看源码,找接受数据getStringExtra()方法中的键确定sms_body

        //【8】跳转到发送短信页面
        startActivity(intent);
    }
});

三、短信发送器

总结:短信大全案例与人品查看器共同点,都有A界面跳转到B界面,然后把A界面数据传递到B界面

           短信发送器:从A跳转到B界面,返回B界面中数据

实现:

1.画布局,找到控件

2.实现点击“+”按钮跳转到模拟通讯录。

      1)新建PersonActivity ,创建PersonActivity要显示的布局:ListView

      2)将模拟数据存入List集合中,每一个ListView元素读取一个List元素

      3)将数据返回至MainActivity

3.实现点击“插入模板”按钮跳转到模板界面

      与跳转到模拟通讯录做法相同

4.将返回的数据显示到EditView控件上

      1)重写onActivityResult() 方法

      2)通过请求码或者返回码区别返回的数据显示到控件上

5.点击发送

      1)读取控件里面的number,concent

      2)获取SmsManager对象

      3)发送短信

            若内容过长,将短信内容截一下才可发送

具体代码

1.activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<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=".MainActivity">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/et_phone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入手机号"
            android:layout_marginTop="6dp"/>
        <Button
            android:onClick="add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="+"
            android:layout_alignParentRight="true"/>
    </RelativeLayout>
    <EditText
        android:id="@+id/et_content"
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:hint="请输入发送短信的内容"
        android:gravity="top"
        />
    <Button
        android:onClick="insert"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="插入模板"
        />
    <Button
        android:onClick="send"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="发送"
        />

</LinearLayout>

2.MainActivity

package activitytest.example.com.smsmanager;

import android.content.Intent;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.view.View;
import android.widget.EditText;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

    EditText et_content;
    EditText et_phone;

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

    //跳转到联系人
    public void add(View v){
        Intent intent = new Intent(this,PersonActivity.class);

        //startActivity(intent);
        //如果点击按钮,跳转到另外一个Activity,并且关闭那个Activity时,想要返回的数据,用下面这个方法
        startActivityForResult(intent,1);
    }
    //当跳转到的Activity页面关闭时会调用此方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        if(resultCode == 10){           //使用请求码也一样    requestCode == 1
            String phone = data.getStringExtra("phone");
            et_phone.setText(phone);
        }else if(resultCode == 20){                         //requestCode == 2
            String muban = data.getStringExtra("muban");
            et_content.setText(muban);
        }
        super.onActivityResult(requestCode, resultCode, data);
    }

    //点击按钮插入模板
    public void insert(View v){
        Intent intent = new Intent(getApplicationContext(),InsertActivity.class);
        startActivityForResult(intent,2);
    }

    //点击按钮发送短信
    public void send(View v){

        String number = et_phone.getText().toString().trim();
        String content = et_content.getText().toString().trim();
        SmsManager smsManager = SmsManager.getDefault();
        ArrayList<String> dirideMessages = smsManager.divideMessage(content);
        for(String div : dirideMessages){
            smsManager.sendTextMessage(number,null,div,null,null);
        }
    }

}

3.activity_contact.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ListView
        android:id="@+id/lv"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
</LinearLayout>

 4.item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal">

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="姓名"
        android:layout_weight="1"
        android:textColor="#000000"
        android:textSize="20sp"
        />
    <TextView
        android:id="@+id/tv_phone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="电话号码"
        android:layout_weight="1"
        android:textColor="#000000"
        android:textSize="20sp"
        />
</LinearLayout>

5.Person

package activitytest.example.com.smsmanager;

public class Person {

    private String name;
    private String phone;

    public String getName() {
        return name;
    }

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

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

 6.ContactActivity

package activitytest.example.com.smsmanager;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

public class ContactActivity extends Activity {

    ListView lv;
    List<Person> lists;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contact);

        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("11"+i);
            lists.add(p);
        }
        //将数据显示到ListView上
        lv.setAdapter(new MyAdapter());

        //给ListView设置点击事件
        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);
                setResult(10,intent);//把结果返回给调用者

                //关闭当前页面
                finish();

            }
        });


    }
    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.item,null);
            }else {
                v = view;
            }
            //找到控件并将数据显示到TextView上
            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;
        }
    }
}

7.item2

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/tv_muban"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="#000000"
        android:textSize="20sp"
        android:text="模板"
        />
</LinearLayout>

7.InsertActivity

package activitytest.example.com.smsmanager;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class InsertActivity extends Activity {

    ListView lv_muban;
    String object[]={"我正在吃饭","我正在开会","我有事不在","请稍等一会"};

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_contact);

        lv_muban = findViewById(R.id.lv);
        lv_muban.setAdapter(new MyAdapter());
        lv_muban.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                String muban = object[i];
                Intent intent = new Intent();
                intent.putExtra("muban",muban);
                setResult(20,intent);
                finish();
            }
        });
    }
    private class MyAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return object.length;
        }

        @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.item2,null);
            }else {
                v = view;
            }

            TextView tv_muban = v.findViewById(R.id.tv_muban);
            tv_muban.setText(object[i]);

            return v;
        }
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值