Android Studio教程10-Intent的詳細使用

来源:https://www.cnblogs.com/haochen273/archive/2019/01/21/10298976.html
-Advertisement-
Play Games

[TOC] 1. Intent啟動器 1.1. Intent的用途 1. 啟動Activity :希望返回結果 2. 啟動服務 啟動一個不適用用戶界面而在後臺執行操作的組件 :下載文件等,可攜帶任何必要的數據 : 使用客戶端 伺服器介面,從其他組件綁定到此服務 3. 傳遞廣播 廣播是任何應用均可接收 ...


目錄

1. Intent啟動器

1.1. Intent的用途

1. 啟動Activity

  • startActivity()
  • startActivityForResult():希望返回結果

    2. 啟動服務

    啟動一個不適用用戶界面而在後臺執行操作的組件

  • startService():下載文件等,可攜帶任何必要的數據
  • bindService(): 使用客戶端-伺服器介面,從其他組件綁定到此服務

3. 傳遞廣播

廣播是任何應用均可接收的消息。系統將針對系統事件(例如:系統啟動或設備開始充電時)傳遞各種廣播

  • sendBroadcast()
  • sendOrderedBroadcast()
  • sendStickyBroadcast()

1.2. Intent類型

1.顯示Intent

按名稱(完全限定類名)指定要啟動的組件

  • 系統將立即啟動 Intent 對象中指定的應用組件
// Executed in an Activity, so 'this' is the Context
// The fileUrl is a string URL, such as "http://www.example.com/image.png"
Intent downloadIntent = new Intent(this, DownloadService.class);
downloadIntent.setData(Uri.parse(fileUrl));
startService(downloadIntent);

2.隱式Intent

不會指定特定的組件,而是聲明要執行的常規操作,從而允許其他應用中的組件來處理它。

  • Android 系統通過將 Intent 的內容與在設備上其他應用的清單文件中聲明的 Intent 過濾器進行比較,從而找到要啟動的相應組件。 如果 Intent 與 Intent 過濾器匹配,則系統將啟動該組件,並向其傳遞 Intent 對象。 如果多個 Intent 過濾器相容,則系統會顯示一個對話框,支持用戶選取要使用的應用。
  • Intent 過濾器是應用清單文件中的一個表達式,它指定該組件要接收的 Intent 類型。
// Create the text message with a string
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
sendIntent.setType("text/plain");

// Verify that the intent will resolve to an activity
if (sendIntent.resolveActivity(getPackageManager()) != null) {
    startActivity(sendIntent);
}

2. 構建Intent

Intent包含的主要信息如下:

  • 組件名稱-用於顯示Intent
  • 操作:指定用於執行的通用操作-用於隱式Intent
    • ACTION_VIEW
    • ACTION_SEND
  • 數據
  • 類別:
  • Extra: putExtra()
  • 標誌

3. 隱式Intent

<activity android:name="MainActivity">
    <!-- This activity is the main entry, should appear in app launcher -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name="ShareActivity">
    <!-- This activity handles "SEND" actions with text data -->
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>
    <!-- This activity also handles "SEND" and "SEND_MULTIPLE" with media data -->
    <intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <action android:name="android.intent.action.SEND_MULTIPLE"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="application/vnd.google.panorama360+jpg"/>
        <data android:mimeType="image/*"/>
        <data android:mimeType="video/*"/>
    </intent-filter>
</activity>
  • 第一個 Activity MainActivity 是應用的主要入口點。當用戶最初使用啟動器圖標啟動應用時,該 Activity 將打開:

    • ACTION_MAIN 操作指示這是主要入口點,且不要求輸入任何 Intent 數據。
      CATEGORY_LAUNCHER 類別指示此 Activity 的圖標應放入系統的應用啟動器。 如果
  • 第二個 Activity ShareActivity 旨在便於共用文本和媒體內容。 儘管用戶可以通過從 MainActivity 導航進入此 Activity,但也可以從發出隱式 Intent(與兩個 Intent 過濾器之一匹配)的另一應用中直接進入 ShareActivity


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 資料庫連表查詢中的nvarchar類型欄位,tb_Users.Certificates is not null條件,is not null 會導致查詢速度慢很多(因為和“=”號條件遍歷方式不一樣)。 替換為 “LEN(tb_Users.Certificates) >0”,利用 Users.Certi ...
  • 1.1.1 hive是什麼? Hive是基於 Hadoop 的一個數據倉庫工具: 1.1.2 hive和Hadoop關係 Hive利用HDFS存儲數據,利用MapReduce查詢數據,聚合函數需要經過MapReduce,非聚合函數直接讀取hdfs塊信息,不通過MapReduce。 1.1.3 hiv ...
  • HBase是建立在Hadoop文件系統之上的分散式面向列的資料庫。它是一個開源項目,是橫向擴展的。 HBase是一個數據模型,類似於谷歌的大表設計,可以提供快速隨機訪問海量結構化數據。它利用了Hadoop的文件系統(HDFS)提供的容錯能力。 它是Hadoop的生態系統,提供對數據的隨機實時讀/寫訪 ...
  • Appache hadoop 版本:2.77 jdk:1.8 系統:centos7 註意不要在root下解壓,要單獨建一個用戶安裝hadoop及其組件。 一、先查看系統是否有自帶j #dk: rpm -qa|grep java 通常是如下4個包: rpm -e --nodeps java-1.8.0 ...
  • oracle提供了for迴圈語句,讓我們可以遍歷select搜索的結果。用法也很簡單,代碼如下: for迴圈語句還可以傳入參數: ...
  • [TOC] 1. RecyclerView 1.1. Add support library 1.2. 將RecyclerView添加到佈局 此文件命名為: 1.3. 主actiivty中如何調用recycleview對象 2. 實例 本節中的所有代碼已上傳到: ...
  • ...
  • 起因: 最近做的APP中有一個新功能:已知用戶微信號,可點擊直接跳轉到當前用戶微信聊天視窗頁面。 當時第一想法是使用無障礙來做,並且覺得應該不難,只是邏輯有點複雜。沒想到最終踩了好多坑,特地把踩過的坑記錄下來。 實現邏輯: 在APP中點擊按鈕→跳轉到微信界面→模擬點擊微信搜索按鈕→在微信搜索頁面輸入 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...