«

Android---47---短信群发功能

时间:2024-3-2 18:02     作者:韩俊     分类: Android


提供一个带列表的对话框供用户选择群发短信的收件人号码,程序则使用了一个ArrayList<String>集合来保存所有的收件人的号码
为了实现群发功能,程序循环遍历ArrayList中的号码,依次向每个号码发送短信即可。



public class MainActivity extends Activity {

    EditText numbers, content;
    Button select, send;
    SmsManager smsManager;
    // 记录列表
    ArrayList<String> sendlist = new ArrayList<String>();

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

        smsManager = SmsManager.getDefault();
        numbers = (EditText) findViewById(R.id.numbers);
        content = (EditText) findViewById(R.id.content);
        select = (Button) findViewById(R.id.select);
        send = (Button) findViewById(R.id.send);

        send.setOnClickListener(new OnClickListener() {

            @SuppressWarnings("deprecation")
            @Override
            public void onClick(View v) {
                // 一个一个去发送短信
                for (String number : sendlist) {
                    PendingIntent pi = PendingIntent.getActivity(
                            MainActivity.this, 0, new Intent(), 0);
                    smsManager.sendTextMessage(number, null, content.getText()
                            .toString(), pi, null);
                }
                Toast.makeText(MainActivity.this, "短信群发完成", 8000).show();
            }
        });
        // 选择联系人
        select.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // 查询联系人的电话号码
                // ContentResolver.query(Uri uri, String[] projection, String
                // selection, String[] selectionArgs, String sortOrder)
                final Cursor cursor = getContentResolver().query(
                        ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                        null, null, null, null);

                BaseAdapter adapter = new BaseAdapter() {

                    @Override
                    public int getCount() {
                        // TODO Auto-generated method stub
                        return cursor.getCount();
                    }

                    @Override
                    public Object getItem(int position) {
                        // TODO Auto-generated method stub
                        return position;
                    }

                    @Override
                    public long getItemId(int position) {
                        // TODO Auto-generated method stub
                        return position;
                    }

                    @Override
                    public View getView(int position, View convertView,
                            ViewGroup parent) {
                        cursor.moveToPosition(position);
                        CheckBox rb = new CheckBox(MainActivity.this);
                        // 获取联系人的电话号码,并去掉中间的中划线、空格
                        String number = cursor
                                .getString(
                                        cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER))
                                .replace("-", "").replace(" ", "");
                        rb.setText(number);
                        if (isChecked(number)) {
                            rb.setChecked(true);
                        }
                        return rb;
                    }
                };
                // 加载list.xml布局文件对应的view界面
                View selectView = getLayoutInflater().inflate(R.layout.list,
                        null);
                // 获取selectView中名为list的ListView组件
                final ListView listView = (ListView) selectView
                        .findViewById(R.id.list);
                listView.setAdapter(adapter);
                new AlertDialog.Builder(MainActivity.this)
                        .setView(selectView)
                        .setPositiveButton("确定",
                                new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialog,
                                            int which) {
                                        // 清空
                                        sendlist.clear();
                                        // 遍历listView组件的每个列表项
                                        for (int i = 0; i < listView.getCount(); i++) {
                                            CheckBox checkBox = (CheckBox) listView
                                                    .getChildAt(i);
                                            // 如果该列表项被勾选
                                            if (checkBox.isChecked()) {
                                                // 添加该列表项的电话号码
                                                sendlist.add(checkBox.getText()
                                                        .toString());
                                            }
                                        }
                                        numbers.setText(sendlist.toString());
                                    }
                                }).show();
            }
        });
    }

    // 判断某个号码是否已在群发范围内
    public boolean isChecked(String phone) {
        for (String s1 : sendlist) {
            if (s1.equals(phone)) {
                return true;
            }
        }
        return false;
    }
}





标签: android

热门推荐