溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Intent如何在Android 項(xiàng)目中使用

發(fā)布時(shí)間:2020-11-26 16:58:19 來源:億速云 閱讀:155 作者:Leah 欄目:移動(dòng)開發(fā)

今天就跟大家聊聊有關(guān)Intent如何在Android 項(xiàng)目中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

一 Android系統(tǒng)用于Activity的標(biāo)準(zhǔn)Intent

1 根據(jù)聯(lián)系人ID顯示聯(lián)系人信息

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW);  //顯示聯(lián)系人信息 
intent.setData(Uri.parse("content://contacts/people/492")); 
startActivity(intent);

2 根據(jù)聯(lián)系人ID顯示撥號(hào)面板

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_DIAL); //顯示撥號(hào)面板 
intent.setData(Uri.parse("content://contacts/people/492")); 
startActivity(intent);

3 顯示撥號(hào)面板, 并在撥號(hào)面板上將號(hào)碼顯示出來

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW);   
intent.setData(Uri.parse("tel://15216448315")); 
startActivity(intent);

4 顯示撥號(hào)面板, 并在撥號(hào)面板上將號(hào)碼顯示出來

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_DIAL);  //顯示撥號(hào)面板, 并在撥號(hào)面板上將號(hào)碼顯示出來 
intent.setData(Uri.parse("tel://15216448315")); 
startActivity(intent);

5 根據(jù)聯(lián)系人的ID編輯聯(lián)系人

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_EDIT);  //編輯聯(lián)系人 
intent.setData(Uri.parse("content://contacts/people/492")); 
startActivity(intent);

6 顯示通訊錄聯(lián)系人和其他賬號(hào)聯(lián)系人的列表

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW);   
intent.setData(Uri.parse("content://contacts/people/")); 
startActivity(intent);

7 啟動(dòng)HomeScreen

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_MAIN);   //啟動(dòng)HomeScreen 
intent.addCategory(Intent.CATEGORY_HOME); 
startActivity(intent);

8 選擇某個(gè)聯(lián)系人的號(hào)碼,返回一個(gè)代表這個(gè)號(hào)碼的uri,如:content://contacts/phones/982

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_GET_CONTENT);    
intent.setType("vnd.android.cursor.item/phone"); 
startActivityForResult(intent, 1);

9  打開多個(gè)應(yīng)用選取各種類型的數(shù)據(jù),以u(píng)ri返回。返回的uri可使用ContentResolver.openInputStream(Uri)打開

    該功能可用在郵件中附件的選取

    舉例如下:

    選取一張圖片, 返回的uri為 content://media/external/images/media/47
    選取一首歌, 返回的uri為 content://media/external/audio/media/51

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_GET_CONTENT);    
intent.setType("*/*"); 
intent.addCategory(Intent.CATEGORY_OPENABLE); 
startActivityForResult(intent, 2);

10 自定義一個(gè)chooser,不使用系統(tǒng)的chooser

     該chooser可以有自己的標(biāo)題(Title)

     并且不必讓用戶指定偏好

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_CHOOSER);  
intent.putExtra(Intent.EXTRA_TITLE, "my chooser"); 
intent.putExtra(Intent.EXTRA_INTENT,  
    new Intent(Intent.ACTION_GET_CONTENT) 
    .setType("*/*") 
    .addCategory(Intent.CATEGORY_OPENABLE) 
    ); 
 
startActivityForResult(intent, 2);

11 選取activity,返回的activity可在返回的intent.getComponent()中得到

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_PICK_ACTIVITY);  
intent.putExtra( Intent.EXTRA_INTENT,  
    new Intent(Intent.ACTION_GET_CONTENT) 
    .setType("*/*") 
    .addCategory(Intent.CATEGORY_OPENABLE) 
    ); 
startActivityForResult(intent, 3);

12 啟動(dòng)搜索,在以下示例代碼中,"ANDROID"為要搜索的字符串

     當(dāng)執(zhí)行這段代碼后, 會(huì)在系統(tǒng)的Chooser中顯示可以用于搜索的程序列表

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_SEARCH);   //啟動(dòng)搜索 
intent.putExtra(SearchManager.QUERY, "ANDROID"); 
startActivity(intent);

13 啟動(dòng)WEB搜索,在以下示例代碼中,"ANDROID"為要搜索的字符串

     當(dāng)執(zhí)行這段代碼后, 會(huì)在系統(tǒng)的Chooser中顯示可以用于搜索的程序列表,一般情況下系統(tǒng)中安裝的瀏覽器都會(huì)顯示出來

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_WEB_SEARCH);   //啟動(dòng)搜索 
intent.putExtra(SearchManager.QUERY, "ANDROID"); 
startActivity(intent);

二  Android系統(tǒng)用于BroadcastReceiver的標(biāo)準(zhǔn)Intent

1 ACTION_TIME_TICK,系統(tǒng)時(shí)鐘廣播,系統(tǒng)每分鐘都會(huì)發(fā)送一個(gè)這樣的廣播,  如果在應(yīng)用開發(fā)中,有些邏輯依賴于系統(tǒng)時(shí)鐘,可以注冊(cè)一個(gè)廣播接收者   這是一個(gè)受保護(hù)的action,只有系統(tǒng)才能發(fā)送這個(gè)廣播   并且,在manifest文件中注冊(cè)的廣播接收者不能接收到該廣播,若要接收該廣播,必須在代碼中注冊(cè)廣播接收者

registerReceiver(new BroadcastReceiver(){ 
 
  @Override 
  public void onReceive(Context context, Intent intent) { 
    Log.i("xxxx", "TIME_TICK"); 
  } 
   
},  
new IntentFilter(Intent.ACTION_TIME_TICK));

2 在官方文檔中,列出了以下標(biāo)準(zhǔn)的廣播action

  1. ACTION_TIME_TICK               系統(tǒng)時(shí)鐘廣播

  2. ACTION_TIME_CHANGED            時(shí)間被重新設(shè)置

  3. ACTION_TIMEZONE_CHANGED        時(shí)區(qū)改變

  4. ACTION_BOOT_COMPLETED          系統(tǒng)啟動(dòng)完成

  5. ACTION_PACKAGE_ADDED           系統(tǒng)中安裝了新的應(yīng)用

  6. ACTION_PACKAGE_CHANGED         系統(tǒng)中已存在的app包被更改

  7. ACTION_PACKAGE_REMOVED         系統(tǒng)中已存在的app被移除

  8. ACTION_PACKAGE_RESTARTED       用戶重啟了一個(gè)app,這個(gè)app的所有進(jìn)程被殺死

  9. ACTION_PACKAGE_DATA_CLEARED    用戶清除了一個(gè)app的數(shù)據(jù)

  10. ACTION_UID_REMOVED             系統(tǒng)中的一個(gè)user ID被移除

  11. ACTION_BATTERY_CHANGED         電池狀態(tài)改變,這是一個(gè)sticky廣播

  12. ACTION_POWER_CONNECTED         設(shè)備連接了外部電源

  13. ACTION_POWER_DISCONNECTED      外部電源被移除

  14. ACTION_SHUTDOWN                設(shè)備正在關(guān)機(jī)

三  Android中的標(biāo)準(zhǔn)類別(category)

類別(category)一般配合action使用,以下為系統(tǒng)中的標(biāo)準(zhǔn)類別,由于數(shù)量過多,只能在使用到時(shí)再詳細(xì)研究

  1. CATEGORY_DEFAULT

  2. CATEGORY_BROWSABLE

  3. CATEGORY_TAB

  4. CATEGORY_ALTERNATIVE

  5. CATEGORY_SELECTED_ALTERNATIVE

  6. CATEGORY_LAUNCHER

  7. CATEGORY_INFO

  8. CATEGORY_HOME

  9. CATEGORY_PREFERENCE

  10. CATEGORY_TEST

  11. CATEGORY_CAR_DOCK

  12. CATEGORY_DESK_DOCK

  13. CATEGORY_LE_DESK_DOCK

  14. CATEGORY_HE_DESK_DOCK

  15. CATEGORY_CAR_MODE

  16. CATEGORY_APP_MARKET

四  Android中的標(biāo)準(zhǔn)Extra鍵值

這些常量用于在調(diào)用Intent.putExtra(String, Bundle)時(shí)作為鍵值傳遞數(shù)據(jù),同樣由于數(shù)量較多,在此只列出索引

  1. EXTRA_ALARM_COUNT

  2. EXTRA_BCC

  3. EXTRA_CC

  4. EXTRA_CHANGED_COMPONENT_NAME

  5. EXTRA_DATA_REMOVED

  6. EXTRA_DOCK_STATE

  7. EXTRA_DOCK_STATE_HE_DESK

  8. EXTRA_DOCK_STATE_LE_DESK

  9. EXTRA_DOCK_STATE_CAR

  10. EXTRA_DOCK_STATE_DESK

  11. EXTRA_DOCK_STATE_UNDOCKED

  12. EXTRA_DONT_KILL_APP

  13. EXTRA_EMAIL

  14. EXTRA_INITIAL_INTENTS

  15. EXTRA_INTENT

  16. EXTRA_KEY_EVENT

  17. EXTRA_ORIGINATING_URI

  18. EXTRA_PHONE_NUMBER

  19. EXTRA_REFERRER

  20. EXTRA_REMOTE_INTENT_TOKEN

  21. EXTRA_REPLACING

  22. EXTRA_SHORTCUT_ICON

  23. EXTRA_SHORTCUT_ICON_RESOURCE

  24. EXTRA_SHORTCUT_INTENT

  25. EXTRA_STREAM

  26. EXTRA_SHORTCUT_NAME

  27. EXTRA_SUBJECT

  28. EXTRA_TEMPLATE

  29. EXTRA_TEXT

  30. EXTRA_TITLE

  31. EXTRA_UID

五  Intent中的標(biāo)志(FLAG)

Intent類中定義了一些以FLAG_開頭的標(biāo)志位,這些標(biāo)志位中有的非常重要,會(huì)影響app中Activity和BroadcastReceiver等的行為。

看完上述內(nèi)容,你們對(duì)Intent如何在Android 項(xiàng)目中使用有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI