1. 程式人生 > >實戰演練隱式Intent的用法

實戰演練隱式Intent的用法

本文通過完成一個實戰任務,來掌握Android開發中隱式Intent的用法。

任務假設我們已經實現了一個視訊播放器(PlayerActivity),我們希望能把它註冊到系統中,當用戶點選本地視訊或者線上視訊時,能啟動這個視訊播放器。

假設該類的全路徑為:com.jhuster.videoplayer.PlayerActivity)

[注]:本文完整的示例程式碼請到我的Github下載,地址:VideoPlayer

1. 什麼是隱式Intent?

Intent是Android中比較重要的元件,常用來啟動一個新的Activity或者Service、廣播某個事件,以及在Android元件之間傳遞資料。通過Intent來啟動新的Activity或者Service通常有兩種方法,一種是顯示啟動,另一種是隱式啟動。

顯示啟動就是在明確指出要啟動的Activity或者Service的類或者包名。例如:

1 2 3 4 5 6 7 8 9 10 Intent intent = newIntent(this, PlayerActivity.class);   startActivity(intent); Intent intent = new Intent(); intent.setClass(this,PlayerActivity.class);   startActivity(intent);  
Intent intent = new Intent(); intent.setClassName(“com.jhuster.videoplayer”,“com.jhuster.videoplayer.PlayerActivity”);  startActivity(intent);

隱式啟動則是不明確指定啟動哪個Activity或者Service,而是通過設定Action、Data、Category,讓系統來篩選出合適的目標。

例如撥打電話: 

1 2 Intent intent = 
new Intent(Intent.ACTION_DIAL,Uri.parse(“tel:021-80961111”)); startActivity(intent);

系統接收到隱式啟動請求後,會根據系統中各個Activity在AndroidManifest.xml檔案中宣告的<intent-filter>來比較和判斷是否匹配當前的Intent請求的。

因此,如果我們希望PlayerActivity能夠被系統隱式啟動,則首先需要在AndroidManifest.xml檔案中為該Activity新增<intent-filter>.

2. 為PlayerActivity新增<intent-filter>

<intent-filter>的標籤有很多,這裡只介紹和新增最基本且最常用的三個標籤,分別是<action>,<category>和<data>。

2.1 新增<action>

這個標籤是必須新增的,可以自己定義,也可以使用系統預定義的變數,Android系統預設定義了很多action,具體可以檢視SDK文件,或者Google一下“android.intent.action.”。

這裡,因為我們的類是用來“播放視訊”的,因此可以使用系統預定義的:android.intent.action.VIEW,它表示需要啟動某個Activity顯示指定的資料(包括圖片、視訊、文件等)。

添加了<action>後的<activity>如下所示:

1 2 3 4 5 <activity android:name="com.jhuster.videoplayer.PlayerActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" />         </intent-filter>             </activity>

2.2 新增<category>

category代表類別,定義了Activity的類別,Activity可以設定一個或者多個category標籤。常用的一般有3個:DEFAULT,HOME,LAUNCHER

1 2 3 DEFAULT  預設動作 HOME     設定為本地桌面應用 LAUNCHER 本APP的啟動Activity

本應用中我們使用DEFAULT類別即可,DEFAULT也是category最常用的選項。

添加了category後的<activity>如下所示:

相關推薦

實戰演練Intent用法

本文通過完成一個實戰任務,來掌握Android開發中隱式Intent的用法。 任務:假設我們已經實現了一個視訊播放器(PlayerActivity),我們希望能把它註冊到系統中,當用戶點選本地視訊或者線上視訊時,能啟動這個視訊播放器。 (假設該類的

幾種常用的Intent用法

1.從google搜尋內容  Intent intent = new Intent();  intent.setAction(Intent.ACTION_WEB_SEARCH);  intent.putExtra(SearchManager.QUERY,"searchString")  startActivi

第一行程式碼系列第二章——更多Intent用法(開啟網頁)

效果圖 修改FirstActivity中按鈕事件 Button button1 = (Button) findViewById(R.id.button_1); button1.setOnClickListener(new OnClickListener() {

從0系統學Android-2.5更多Intent用法

本系列文章,參考《第一行程式碼》,作為個人筆記 更多內容:更多精品文章分類 從0系統學Android-2.5更多隱式Intent用法 上一節中我們學習了通過隱式 Intent 來啟動 Activity。實際上隱式 Intent 還有更多的內容。 使用隱式 Intent 我們不僅可以啟動自己程式內符合要求的

intentintent

this .text 接收 Coding 南京 聲明 menuitem ret 處理 android其中顯式intent和隱式intent的差別 定義:   Intent定義:Intent是一種在不同組件之間傳遞的請求消息。是應用程序發出的請求和意圖。作為一個完

(三)使用Intent在活動中穿梭:顯Intent

new findview public img 使用 匹配 ted listener style 一、顯式Intent @Override protected void onCreate(Bundle savedInstanceState) {

intent詳解

 本篇文章,對隱式啟動Activity再做分析。   有些人可能會說了,隱式啟動活動不是很簡單嗎?這有什麼不理解的?話先別說的這麼早,對於隱式啟動,還是具有很大的坑要爬的,當然,您如果是一個資深開發者就另當別論了。   本篇文章,我們從最簡單的開始,一步步引入,

Android入門 Intent

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

安卓開發學習筆記(四):Android Stuidio無法實現Intent是為什麼?

1 package com.example.lenovo.activitytest; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.view

詳解顯intentintent

Intent是Android程式中各元件之間進行互動的一種重要方式。它不僅可以指明activity想要執行的動作,也可以在不同元件之間傳輸資料。 Intent分為兩種,顯式intent和隱式intent,以下分別進行描述: 一、顯式intent bt

Intent介紹及intent-filter的action,category,data匹配規則

Intent型別 Intent 分為兩種型別: 顯式 Intent:按名稱(完全限定類名)指定要啟動的元件。 通常,您會在自己的應用中使用顯式 Intent 來啟動元件,這是因為您知道要啟動的 Activity 或服務的類名。例如,啟動新 Activity 以響應使用者

學習安卓開發[4] - 使用Intent啟動簡訊、聯絡人、相機應用

在上一篇學習安卓開發[3] - 使用RecyclerView顯示列表中瞭解了在進行列表展示時RecyclerView的使用,本次記錄的是在應用中如何通過隱式Intent呼叫其它應用的功能,比如發簡訊、打電話、拍照等 隱式Intent 簡訊 判斷是否存在相關APP 相機

通過Intent呼叫相簿和呼叫相機 獲取圖片

package com.zdsoft.picture1202; import android.content.DialogInterface; import android.content.Intent; import android.support.v7.app.Ale

Android Intent相比於顯Intent的優點

要啟動一個Activity有兩種方法,一種是通過顯式Intent啟動,而另一種是通過隱式Intent啟動。 對於顯式Intent,通過查閱API文件,構造方法為(Context packageContext, Class<?> cls),這說明我們需要傳入的引數

Intent 物件練習4---使用預定義動作的Intent

 程式碼:  activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi

Android 系統自帶intent應用

完成效果:撥打電話,傳送簡訊,播放音樂,播放視訊,開啟網頁,檢視圖片,通知欄。 PopWindow中完成效果:拍照片,從相簿選擇照片並且可裁減。 首先在清單檔案中加入如下許可權: <uses-permission android:name="android.perm

android利用intent跳轉介面

 AndroidManifest.xml檔案中,下面紅色部分的內容不可少 <activity android:name=".LoginActivity"> <inten

Android理解:顯Intent

Intent是Android初學者比較難理解的一個東西。我這裡以通俗易懂的語言和通俗易懂的程式碼,讓初學者簡單感受一下Intent。intent就是意圖的意思。Intent分兩種:顯式(Explicit intent)和隱式(Implicit intent)。 一、顯式(

Intent及AndroidManifest.xml檔案中intent-filter引數說明

1、顯式Intent通常用於程式內部間的元件通訊,已經明確的定義了目標元件的資訊,所以不需要系統決策用哪個目標元件. Intent明確的指定了要啟動的Acitivity,如下: Intent intent = new Intent(Context packageContex

Android intent 用法

通過隱式用法從MainActivity跳轉到SecondActivity manifests <activity android:name=".Next"> <intent-filter> <ca