没有经验三天开发一个Android app(第二天 demo级)

第二天就是你要做的app的实现了。

我想做的app是短信群发,这个app要有功能:

1. 分组功能,组可以增加,删除,重命名,给组中追加联系人/删除联系人;

2. 短信可以发给某一个分组或者所有的联系人,在发送短信之前要加上联系人的名字;

3. 分组信息要持久化

从需求来看这里比较重要的就是获得联系人信息和发送短信;

然后google android get all contact 和 android send message就可以找到相应的代码段来实现这两个功能。

以下是我现在的代码中使用的code:

获得所有的联系人:

public static List<Contact> getAllContact(ContentResolver cr) {
    List<Contact> contacts = new ArrayList<Contact>();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
    if(cur.getCount() <= 0) {
        return contacts;
    } 

    while (cur.moveToNext()) {
        String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
        String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));

        Contact contact = new Contact();
        contact.name = name;

        if (Integer.parseInt(cur.getString(cur
                        .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
            Cursor pCur = cr.query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID
                            + " = ?", new String[] { id }, null);
            while (pCur.moveToNext()) {
                String phoneNo = pCur.getString(pCur
                                .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                contact.telNumbers.add(phoneNo);
            }
            pCur.close();
        }

        contacts.add(contact);
    }

    return contacts;
}

发送短信:

private void sendMessage(Contact contact, String text) {
    if (contact.telNumbers.size() <= 0) {
        return;
    }

    String sms = "Hi, " + contact.name + ". " + text;

    try {
        SmsManager smsManager = SmsManager.getDefault();
        smsManager.sendTextMessage(contact.telNumbers.get(0), null, sms, null, null);
        contact.isSend = true;
    } catch (Exception e) {
        contact.isSend = false;
    }
}

下面是我第一天完成后的界面:

发送的结果: