原文找不到了。看了别人的一些。自己加了一点。做一个代码备份。自己看就可以了。先上一下图吧。看看一效果。
通过上边选择联系人。把选择过的联系显示到EditView 中。而发送短信时。可以获取联系人的电话号码。
发短信的的类SendmessageActivity.java
package com.hkrt.action;import java.util.List;import android.app.Activity;
import android.app.PendingIntent;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class SendmessageActivity extends Activity {private EditText editNum;private EditText editContext;private String phoneNum;private int LIANXR=10;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);editNum =(EditText)this.findViewById(R.id.input_num);editContext =(EditText)this.findViewById(R.id.input_content);Button button =(Button)this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {
// String phoneNum = editNum.getText().toString();String context = editContext.getText().toString();SmsManager sms = SmsManager.getDefault();//发送信息的管理器PendingIntent sentIntent = PendingIntent.getBroadcast(SendmessageActivity.this, 0, new Intent(), 0);//PendingIntent也是一个意图//把短信内容进行每70个字节分割List<String> conts= sms.divideMessage(context);for(String str:conts){sms.sendTextMessage(phoneNum, null, str, sentIntent, null);}//信息发送完后提示Toast.makeText(SendmessageActivity.this, "短信发送完成", Toast.LENGTH_LONG).show();}});Button btnContact = (Button)this.findViewById(R.id.btnContact);btnContact.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);startActivityForResult(intent, LIANXR);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);ContentResolver resol = getContentResolver();if (resultCode == Activity.RESULT_OK) {String name;Uri contactData = data.getData();Cursor c = managedQuery(contactData, null, null, null, null);c.moveToFirst();name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));editNum.setText(name);// 取得联系人id,每个条目都有一个唯一的id(主键)String contactId = c.getString(c.getColumnIndex(ContactsContract.Contacts._ID));// 取得联系人的号码Cursor phone = resol.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId, null, null);while (phone.moveToNext()) {phoneNum = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));System.out.println("phonum:"+phoneNum);}}}}
main.xml <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/><EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/input_num"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="contact"android:id="@+id/btnContact"/><TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/input_context"/><EditText android:layout_height="wrap_content"android:layout_width="fill_parent"android:id="@+id/input_content" android:minLines="3"android:gravity="top"/><Button android:text="@string/button"android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/button"/></LinearLayout>
调用联系人ContactPick.java package com.hkrt.action;import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.AdapterView.OnItemClickListener;public class ContactPick extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);Intent orgIntent = getIntent();Uri queryUri = orgIntent.getData();final Cursor c = managedQuery(queryUri,null,null,null,null);String[] fromColumns = new String[] { ContactsContract.Contacts.DISPLAY_NAME };int[] toLayoutIDs = new int[] { R.id.itemTextView };SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.listitemlayout, c, fromColumns, toLayoutIDs);ListView lv = (ListView) findViewById(R.id.contactListView);lv.setAdapter(adapter);lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view, int pos,long id) {c.moveToPosition(pos);int rowId = c.getInt(c.getColumnIndexOrThrow(ContactsContract.Contacts._ID));Uri outURI = Uri.parse(ContactsContract.Contacts.CONTENT_URI .toString()+ rowId);Intent outData = new Intent();outData.setData(outURI);setResult(Activity.RESULT_OK, outData);finish();}});}}
对应的两个xml .contact.xml 和listitemlayout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><ListView android:id="@+id/contactListView"android:layout_width="fill_parent"android:layout_height="wrap_content" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><TextView android:id="@+id/itemTextView" android:layout_width="wrap_content"android:layout_height="wrap_content" android:padding="10px"android:textSize="16px" android:textColor="#FFF" /></LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.hkrt.action"android:versionCode="1"android:versionName="1.0"><uses-sdk android:minSdkVersion="8" /><application android:icon="@drawable/send" android:label="@string/app_name"><uses-library android:name="android.test.runner" /><activity android:name=".SendmessageActivity" android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".ContactPick" android:label="@string/app_name"><action android:name="android.intent.action.PICK" /><category android:name="android.intent.category.DEFAULT" /></activity></application><instrumentation android:name="android.test.InstrumentationTestRunner"android:targetPackage="com.hkrt.action" android:label="Tests for My App" /><uses-permission android:name="android.permission.SEND_SMS"/><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.WRITE_CONTACTS" /></manifest>
demo 目录图: