Android内部提供了大量标准Action、Category常量,见下表:
上面只是部分较常用的Action常量和Category常量,查看全部常量应参考AndroidAPI文档。
下面通过一个实例来演示系统Action、Category的使用,本实例中提供一个按钮,用户单击按钮会显示系统的联系人列表,当用户单击指定联系人之后,程序将会显示该联系人的名字、电话。此程序非常实用,比如我们要开发一个发短信的程序,就需要浏览系统联系人列表,并进行选择,代码如下:
Activity:
package com.lovo.activity; 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.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class SysActionActivity extends Activity { private final int PICK_CONTACT = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button) findViewById(R.id.main_btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); String uriStr = "content://com.android.contacts/contacts/1"; Uri uri = Uri.parse(uriStr); // 设置Intent的Action属性 intent.setAction(Intent.ACTION_GET_CONTENT); // 设置uri地址 intent.setData(uri); // 启动Activity,并希望获取该Activity返回的结果 startActivityForResult(intent, PICK_CONTACT); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case PICK_CONTACT: if (resultCode == Activity.RESULT_OK) { // 获取返回的数据 Uri contactData = data.getData(); // 查询联系人信息 Cursor cursor = managedQuery(contactData, null, null, null, null); // 如果查询到指定的联系人 if (cursor.moveToFirst()) { String contactId = cursor.getString(cursor .getColumnIndex(ContactsContract.Contacts._ID)); // 获取联系人的姓名 String name = cursor .getString(cursor .getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); String phoneNumber = "此联系人暂时未输入电话号码"; // 根据联系人查询到该联系人的详细信息 Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, null, null); // 取出第一行 if (phones.moveToFirst()) { // 取出电话号码 phoneNumber = phones .getString(phones .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); } // 关闭游标 phones.close(); EditText show = (EditText) findViewById(R.id.main_et_name); // 显示联系人的姓名 show.setText(name); EditText phone = (EditText) findViewById(R.id.main_et_phone); // 显示联系人的电话 phone.setText(phoneNumber); } // 关闭游标 cursor.close(); } break; } } }
布局XML:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <EditText android:id="@+id/main_et_name" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cursorVisible="false" android:editable="false" /> <EditText android:id="@+id/main_et_phone" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cursorVisible="false" android:editable="false" /> <Button android:id="@+id/main_btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="获取联系人" /> </LinearLayout>
加上权限:<uses-permission android:name="android.permission.READ_CONTACTS" />