通讯录与拨打电话发送短息详解代码

public class DemoActivity extends Activity implements OnClickListener {
private EditText name,input;
private Button submit ,send,button;
private String username,usernumber;
      @Override
      public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            init();
      }
private void init() {

submit=(Button) findViewById(R.id.mail_submit);
send=(Button) findViewById(R.id.mail_send);
button=(Button) findViewById(R.id.button1);
name=(EditText) findViewById(R.id.main_name);
input=(EditText) findViewById(R.id.main_input);
final TextView tv=(TextView) findViewById(R.id.main_guishudi);
submit.setOnClickListener(this);
button.setOnClickListener(this);
send.setOnClickListener(this);
input.addTextChangedListener(new TextWatcher() {
// 输入的值 顺序值 开启值 以后 计算
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (s.length() > 2) {
String address = Addressdao.getAddress(
getApplicationContext(), s.toString());
// 获取归属地数据
tv.setText("归属地:" + address);
}

}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}

});
}
public void onClick(View v) {
String trim = input.getText().toString().trim();
String content = name.getText().toString().trim();
switch (v.getId()) {
case R.id.mail_submit:
if(TextUtils.isEmpty(trim)){
Toast.makeText(this, "电话号码不能为空", 0).show();
}else{
Intent intent = new Intent();
   intent.setAction(Intent.ACTION_CALL);//设置anction,要干嘛(电话还是短信或者其他的action)
intent.setData(Uri.parse("tel:"+trim));
startActivity(intent);
break;
}
case R.id.mail_send:
if(TextUtils.isEmpty(trim)||TextUtils.isEmpty(content)){
Toast.makeText(this, "电话号码与内容不能为空", 0).show();
}else{
//获取短信管理对象
SmsManager message = SmsManager.getDefault();//获取短信管理对象
ArrayList<String> messages = message.divideMessage(content);
for(String msg:messages){
message.sendTextMessage(trim, null, msg, null, null);// //分别是短息发送目的地,短信中心,短信内容,发送报告,接受报告
//message.sendDataMessage(num, null, null, msg, null, null);
                 //分别是短息发送目的地,短信中心,目的地端口,短信内容,发送报告,接受报告
}
}
break;
case R.id.button1://获取联系人
startActivityForResult(new Intent(Intent.ACTION_PICK,
ContactsContract.Contacts.CONTENT_URI), 0);
}
}
//把結果返回
@Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
        ContentResolver reContentResolverol = getContentResolver();
     Uri contactData = data.getData();
     @SuppressWarnings("deprecation")
     Cursor cursor = managedQuery(contactData, null, null, null, null);
     cursor.moveToFirst();
     username = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
                 String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                 Cursor phone = reContentResolverol.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
                     null, 
                     ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, 
                     null, 
                     null);
                  while (phone.moveToNext()) {
                    usernumber = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        input.setText(usernumber+" ("+username+")");
     }
}
}
}

数据库
public class Addressdao {
// 获取地址值 上下文 文件的名称
public static String getAddress(Context context, String number) {

String address = number;
// 存放到手机内存中 文件名称naddress.db
File file = new File(context.getFilesDir(), "naddress.db");
// 数据库的路径
SQLiteDatabase db = SQLiteDatabase.openDatabase(file.getAbsolutePath(),
null, SQLiteDatabase.OPEN_READONLY);
if (number.matches("^1[358]\\d{9}$")) {// 首值是1 第二为是3 5 8 还有九位
// 判断这个号码是手机号码 还是固定电话。11位;
if (db.isOpen()) {// 当开启数据库时,查询数据库值
String[] n = new String[] { number.substring(0, 7) };
Cursor cursor = db.rawQuery("select city from address_tb where _id=(select outkey from numinfo where mobileprefix=?)",
n);
if (cursor.moveToFirst()) {
address = cursor.getString(0);
}
cursor.close();// 关闭数据库与查询的值
db.close();
}

} else {// 固定电话
switch (number.length()) {
case 7:
address = "本地电话";
break;
case 8:
address = "本地电话";
break;
default:
if (number.length() > 4) {
String area = number.substring(0, 4);// 0-3
Cursor cursor = db.rawQuery(
"select city from address_tb where area=? limit 1",
new String[] { area });
if (cursor.moveToFirst()) {// 获取第一个
address = cursor.getString(0);// 查询城市的地址为1的
}
cursor.close();// 查询完后要把数据给关闭
area = number.substring(0, 3);// 获取地址的1-2个值
cursor = db.rawQuery(
"select city from address_tb where area=? limit 1",
new String[] { area });
if (cursor.moveToFirst()) {
address = cursor.getString(0);// 查询城市的地址为1的
}
cursor.close();
}
break;
}

}
db.close();
return address;// 返回地址
}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值