步骤:1.首先通过联系人的ContentResolver获取系统联系人信息,并展现在界面;
2.选择联系人后,返回前一个界面,将联系人号码传递回去;
3.根据联系人号码和输入短信内容,调用系统API发送短信,在利用短信的ContentResolver保存数据到本地;
部分代码:
package com.example.contact;
import java.util.List;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
EditText et;
EditText body;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
String phone = intent.getStringExtra("phone");
et = (EditText)findViewById(R.id.editText1);
body = (EditText)findViewById(R.id.body);
et.setText(phone);
}
public void change(View view){
Toast.makeText(this, "选择联系人", 0).show();
Intent intent = new Intent(this,OtherActivity.class);
startActivity(intent);
}
public void send(View view){
String s_num = et.getText().toString().trim();
String s_con = body.getText().toString().trim();
//利用工具类判断字符是否为空,并提示
if(TextUtils.isEmpty(s_num) || TextUtils.isEmpty(s_con)){
Toast.makeText(this, "电话号码或内容不能为空", Toast.LENGTH_SHORT).show();
return;
}
/**
* 发送短信需要获得系统权限,需要到AndroidManifest.xml里面配置权限
* <uses-permission android:name="android.permission.SEND_SMS"/>
* 用系统API发送短信,不会再系统短信界面中显示
*/
//得到系统短信管理器
SmsManager sm = SmsManager.getDefault();
//将文本内容进行转换,防止输入一条短信太长,进行拆分
List<String> list = sm.divideMessage(s_con);
for(String s: list){
//发送短信,最后一个参数代表,发送成功后,进行消息提示
/**
* 参数1:短信发给谁
* 参数2:国内暂不支付(短信来自哪里,对自己号码进行伪装)
* 参数3:短信内容
* 参数4:延迟意图
* 参数5:短信送达报告(是否投递成功)
*/
sm.sendTextMessage(s_num, null, s, null, null);
}
//获取内容提供者对象
ContentResolver resolver = getContentResolver();
//设置发送短信的Uri
Uri uri = Uri.parse("content://sms/sent");
ContentValues values = new ContentValues();
//设置参数
values.put("address", s_num);
values.put("type", 2);
values.put("read", 0);
values.put("date", System.currentTimeMillis());
values.put("body", s_con);
resolver.insert(uri, values);
Toast.makeText(this, "发送成功", 0).show();
}
}
package com.example.contact;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class OtherActivity extends Activity {
private static final String Contact = null;
List<Contact> list;
ListView listView ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
listView = (ListView)findViewById(R.id.lv);
//得到内容提供者对象
ContentResolver resolver = getContentResolver();
//设置查找uri
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
//获得所有的联系人信息
Cursor cursor = resolver.query(uri, null, null, null, null);
list = new ArrayList<Contact>();
//遍历每个联系人,根据联系人ID,获得它的相关数据,循环完毕,获得一个联系人的全部信息
while (cursor.moveToNext()) {
String id = cursor.getString(cursor.getColumnIndex("contact_id"));
ContentResolver resolvers = getContentResolver();
Uri uri1 = Uri.parse("content://com.android.contacts/data");
Cursor cur= resolvers.query(uri1, null, "raw_contact_id=?", new String[]{id}, null);
Contact con = new Contact(id);
while (cur.moveToNext()) {
changeData(cur,con);
}
list.add(con);
cur.close();
}
cursor.close();
listView.setAdapter(new MyAdapter());
}
private class MyAdapter extends BaseAdapter{
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView tv = new TextView(getApplicationContext());
tv.setTextColor(Color.BLACK);
tv.setTextSize(20);
final Contact con = list.get(position);
tv.setText(con.toString());
tv.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
intent.putExtra("phone", con.getPhone());
startActivity(intent);
}
});
return tv;
}
}
public void changeData(Cursor cur,Contact con){
String mimetype = cur.getString(cur.getColumnIndex("mimetype"));
String data = cur.getString(cur.getColumnIndex("data1"));
if("vnd.android.cursor.item/name".equals(mimetype)){
con.setName(data);
}else if("vnd.android.cursor.item/postal-address_v2".equals(mimetype)){
con.setAdress(data);
}else if("vnd.android.cursor.item/phone_v2".equals(mimetype)){
con.setPhone(data);
}
}
}
点击下载源码