某些應用程序(如牆紙)沒有默認活動,無法通過啓動意向啓動,但如果上下文正確,您應該能夠使用常規意圖。即時通訊不知道如果這適用於有問題的特定應用程序....
我會假設你做出另一個主屏幕或ROM,這就是爲什麼你想要這樣嗎?
這應該有助於
聯繫人/聯繫人應用 選擇聯繫人
讓用戶選擇一個聯繫人,並提供給所有的聯繫人信息,您的應用程序的訪問,使用ACTION_PICK行動,並指定MIME類型到Contacts.CONTENT_TYPE。
Intent傳遞給您的onActivityResult()回調包含指向所選聯繫人的內容:URI。即使您的應用不包含READ_CONTACTS權限,響應也會授予您的應用使用聯繫人提供程序API讀取該聯繫人的臨時權限。
提示:如果您只需要訪問特定的聯繫信息(例如電話號碼或電子郵件地址),請參閱下一節有關如何選擇特定聯繫人數據的部分。
行動 ACTION_PICK 數據URI方案 無 MIME類型 Contacts.CONTENT_TYPE 例意圖:
static final int REQUEST_SELECT_CONTACT = 1;
public void selectContact() {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_SELECT_CONTACT);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SELECT_CONTACT && resultCode == RESULT_OK) {
Uri contactUri = data.getData();
// Do something with the selected contact at contactUri
...
}
}
有關如何獲取聯繫方式,一旦你取得聯繫URI的信息,請閱讀檢索細則聯繫人。請記住,當您檢索具有上述意圖的聯繫人URI時,您不需要READ_CONTACTS權限即可閱讀該聯繫人的詳細信息。
選擇特定的聯繫人數據
讓用戶選擇從接觸,信息的特定部分,諸如電話號碼,電子郵件地址,或其他數據類型,使用ACTION_PICK動作並指定MIME類型來下面列出的內容類型之一,例如CommonDataKinds.Phone.CONTENT_TYPE以獲取聯繫人的電話號碼。
如果您只需要從聯繫人中檢索一種類型的數據,則使用ContactsContract.CommonDataKinds類中的CONTENT_TYPE的技術比使用聯繫人更有效。CONTENT_TYPE(如上一節所示),因爲結果可讓您直接訪問所需的數據,而無需對聯繫人提供程序執行更復雜的查詢。
Intent傳遞給您的onActivityResult()回調包含指向所選聯繫人數據的內容:URI。即使您的應用不包含READ_CONTACTS權限,響應也會授予您的應用臨時權限以讀取該聯繫人數據。
行動 ACTION_PICK 數據URI方案 無 MIME類型 CommonDataKinds.Phone.CONTENT_TYPE從一個電話號碼的聯繫人 挑選。 CommonDataKinds.Email.CONTENT_TYPE 從聯繫人中選擇一個電子郵件地址。 CommonDataKinds.StructuredPostal.CONTENT_TYPE 從郵政地址中選擇聯繫人。 或ContactsContract下的許多其他CONTENT_TYPE值之一。
例意圖:
static final int REQUEST_SELECT_PHONE_NUMBER = 1;
public void selectContact() {
// Start an activity for the user to pick a phone number from contacts
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(CommonDataKinds.Phone.CONTENT_TYPE);
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == RESULT_OK) {
// Get the URI and query the content provider for the phone number
Uri contactUri = data.getData();
String[] projection = new String[]{CommonDataKinds.Phone.NUMBER};
Cursor cursor = getContentResolver().query(contactUri, projection,
null, null, null);
// If the cursor returned is valid, get the phone number
if (cursor != null && cursor.moveToFirst()) {
int numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER);
String number = cursor.getString(numberIndex);
// Do something with the phone number
...
}
}
}
我將把你在這裏
http://developer.android.com/guide/components/intents-common.html
很漂亮的解釋!措辭優雅,簡單!豎起大拇指! – La5t5tarfighter
嘿CommonsWare,對於遲到的回覆感到抱歉,沒有期待快速的幫助,並厭倦了編碼;)......你的解釋和你的代碼示例不會更好。它正是我需要的(應用程序的活動)。謝謝SOOOOOO很多! :) – treesoft