<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Intent 使用詳解

          共 3191字,需瀏覽 7分鐘

           ·

          2020-10-15 20:15

          d36657ed4e7a2fb21d7953268381b785.webp

          和你一起終身學(xué)習(xí),這里是程序員Android

          經(jīng)典好文推薦,通過(guò)閱讀本文,您將收獲以下知識(shí)點(diǎn):

          一、Intent 簡(jiǎn)介
          二、Intent 主要用途
          三、Intent 分類
          四、隱式Intent 接收過(guò)濾標(biāo)簽
          五、PendingIntent 介紹
          六、Intent的七大屬性
          七、使用ADB調(diào)試 Intent

          一、Intent 簡(jiǎn)介

          Intent?是一個(gè)消息傳遞對(duì)象,主要用于組件之間的通訊,例如:?jiǎn)?dòng)Activity、啟動(dòng)Service、傳遞Broadcast等。

          Intent 主要功能流程圖如下:

          83cf5ea271004a1a8658cfacef5565dc.webp

          Intent 主要功能流程圖

          二、 Intent 主要用途

          1. 啟動(dòng)Activity

          • startActivity()
            無(wú)返回值,直接啟動(dòng)Activity

          • startActivityForResult()
            有返回值,返回值在onActivityResult() 回調(diào)

          2. 啟動(dòng)Service

          • startService()
            一次性操作

          • bindService()
            綁定組件,隨組件生命周期結(jié)束而結(jié)束

          3. 發(fā)送Broadcast

          • sendBroadcast()
            普通無(wú)序廣播

          • sendOrderedBroadcast()
            有序廣播

          • sendStickyBroadcast()
            持續(xù)黏性廣播

          三、 Intent 分類

          1.顯示 Intent

          按名稱(完全限定類名)指定要啟動(dòng)的組件。
          例如:

                              Intent intentActivity = new Intent(MainActivity.this,
          ActivityMethods.class);
          startActivity(intentActivity);

          2.隱式 Intent

          不會(huì)指定特定的組件,而是聲明要執(zhí)行的常規(guī)操作,從而允許其他應(yīng)用中的組件來(lái)處理它
          例如:

              /**
          * 發(fā)送短信
          * **/

          public static void SendMms(Context context, String mmsString) {

          Intent sendIntent = new Intent();
          sendIntent.setAction(Intent.ACTION_SEND);
          sendIntent.putExtra(Intent.EXTRA_TEXT, mmsString);
          sendIntent.setType("text/plain");
          // sendIntent.setData(Uri.parse("smsto:"));
          // This ensures only SMS apps respond
          // 修改 Intnent 選擇器Tittle
          String title = context.getResources().getString(R.string.hello_world);
          Intent chooser = Intent.createChooser(sendIntent, title);

          // 驗(yàn)證是否有Activity 接收
          if (sendIntent.resolveActivity(context.getPackageManager()) != null) {
          context.startActivity(chooser);
          }
          }
          四、 隱式Intent 接收過(guò)濾標(biāo)簽

          應(yīng)用可以接收哪些隱式Intent,請(qǐng)?jiān)谇鍐挝募惺褂?元素為每個(gè)應(yīng)用組件聲明一個(gè)或多個(gè)?Intent過(guò)濾器。每個(gè)Intent?過(guò)濾器均根據(jù)?Intent的操作、數(shù)據(jù)和類別指定自身接受的Intent類型。僅當(dāng)隱式Intent?可以通過(guò)Intent過(guò)濾器之一傳遞時(shí),系統(tǒng)才會(huì)將該?Intent傳遞給應(yīng)用組件。

          1.

          在?name屬性中,聲明接受的?Intent操作。該值必須是操作的文本字符串值,而不是類常量。

          例如:
          java?代碼中啟動(dòng)的IntentAction

          Intent sendIntent = new Intent("String_action");

          Androidmanfest.xml 中過(guò)濾標(biāo)簽如下:

          0f585f80e8a3b1962dcc30863fdbaa04.webp

          Androidmanfest 標(biāo)簽聲明

          2.

          使用一個(gè)或多個(gè)指定數(shù)據(jù)?URI?各個(gè)方面(scheme、host、port、path等)和?MIME?類型的屬性,聲明接受的數(shù)據(jù)類型。

          3.

          在?name?屬性中,聲明接受的Intent?類別。該值必須是操作的文本字符串值,而不是類常量。

          例如:

          48efdbcafbe892c9d66f00818e37792d.webp

          category 屬性使用

          4. 禁止其他應(yīng)用通過(guò)Intent 掉起自己組件

          android:exported="false"

          5. 應(yīng)用主要入口點(diǎn)Action

          6. Launcher 圖標(biāo)入口Action

          以下兩個(gè)元素必須配對(duì)使用,Activity才會(huì)顯示在應(yīng)用啟動(dòng)器中。

          501ab1e5baae93add1ae81e69bd3af28.webp

          Launcher 標(biāo)簽入口

          7.注意:

          CATEGORY_LAUNCHER?類別指示此?Activity的圖標(biāo)應(yīng)放入系統(tǒng)的應(yīng)用啟動(dòng)器。如果元素未使用?icon指定圖標(biāo),則系統(tǒng)將使用元素中的圖標(biāo)

          五、PendingIntent 介紹

          PendingIntent對(duì)象是Intent對(duì)象的包裝器。PendingIntent?的主要目的是授權(quán)外部應(yīng)用使用包含的?Intent,就像是它從您應(yīng)用本身的進(jìn)程中執(zhí)行的一樣。

          主要應(yīng)用于以下場(chǎng)景

          • 1.通知?NotificationManager

          • 2.應(yīng)用小部件?AppWidget

          • 3.定時(shí)任務(wù)?AlarmManager

          1. PendingIntent 使用注意事項(xiàng):

          • 1.PendingIntent.getActivity()
            適用于啟動(dòng)?Activity的?Intent。

          • 2.PendingIntent.getService()
            適用于啟動(dòng)Service的?Intent。

          • 3.PendingIntent.getBroadcast()
            適用于啟動(dòng)?BroadcastReceiver?的Intent

          六、Intent的七大屬性

          1 . Component Name(目標(biāo)組件的全類、組件名稱)

          setComponent(),
          getComponent(),
          setClass() ,
          setClassName()

          2 . Action (intent 將執(zhí)行的動(dòng)作)

          setAction()
          getAction()

          3 . Data (用于向Action 屬性提供操作數(shù)據(jù))

          URI對(duì)象scheme://host:port/path?(協(xié)議頭,主機(jī),端口,路徑)

          4 . Type 分類

          指定Data所指定的Uri對(duì)應(yīng)的MIME類型,不指定會(huì)根據(jù)數(shù)據(jù)自動(dòng)推導(dǎo)

          5 . Category 類別

          Action?提供額外的附件類別信息,可以有多個(gè)Category,但必須有一個(gè)default。

             
          <category android:name="android.intent.category.DEFAULT"/>

          6 . Extra 數(shù)據(jù)載體

          通過(guò)鍵值對(duì)進(jìn)行數(shù)據(jù)存儲(chǔ),用于多個(gè)Action之間提供數(shù)據(jù)交換.

          7 . Flags 標(biāo)記

          標(biāo)記組件如何啟動(dòng),以及啟動(dòng)后如何對(duì)待FALG_ACTIVITY_SINGLE_TOP
          FALG_ACTIVITY_CLEAR_TOP等等)

          七、 使用ADB調(diào)試 Intent

          1. 語(yǔ)法

          adb shell am start -a <ACTION> -t <MIME_TYPE> -d <DATA> \
          -e <EXTRA_NAME> <EXTRA_VALUE> -n <ACTIVITY>

          2.舉例

          adb shell am start -a android.intent.action.DIAL \
          -d tel:555-5555 -n org.example.MyApp/.MyActivity

          至此,本篇已結(jié)束。轉(zhuǎn)載網(wǎng)絡(luò)的文章,小編覺(jué)得很優(yōu)秀,歡迎點(diǎn)擊閱讀原文,支持原創(chuàng)作者,如有侵權(quán),懇請(qǐng)聯(lián)系小編刪除。同時(shí)感謝您的閱讀,期待您的關(guān)注。

          瀏覽 51
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天堂国产在线 | 日韩无码a蜜桃 | 99中文视频 | 影音先锋久久久久AV综合网成人 | 欧美操逼免费看 |