Android之Intent顯示和隱式呼叫
intent就是意圖的意思。Intent分兩種:顯式(Explicit intent)和隱式(Implicit intent)。
一、顯式(設定Component)
顯式,即直接指定需要開啟的activity對應的類。
以下多種方式都是一樣的,實際上都是設定Component直接指定Activity類的顯式Intent,由MainActivity跳轉到SecondActivity:
1、構造方法傳入Component,最常用的方式
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
2、setComponent方法
ComponentName componentName = new ComponentName(this, SecondActivity.class);
// 或者ComponentName componentName = new ComponentName(this, "com.example.app016.SecondActivity");
// 或者ComponentName componentName = new ComponentName(this.getPackageName(), "com.example.app016.SecondActivity");
Intent intent = new Intent();
intent.setComponent(componentName);
startActivity(intent);
3、setClass/setClassName方法
Intent intent = new Intent();
intent.setClass(this, SecondActivity.class);
// 或者intent.setClassName(this, "com.example.app016.SecondActivity");
// 或者intent.setClassName(this.getPackageName(), "com.example.app016.SecondActivity");
startActivity(intent);
顯式Intent通過Component可以直接設定需要呼叫的Activity類,可以唯一確定一個Activity,意圖特別明確,所以是顯式的。設定這個類的方式可以是Class物件(如SecondActivity.class),也可以是包名加類名的字串(如"com.example.app016.SecondActivity")。這個很好理解,在應用程式內部跳轉介面常用這種方式。
二、隱式
隱式,即不是像顯式的那樣直接指定需要呼叫的Activity,隱式不明確指定啟動哪個Activity,而是設定Action、Data、Category,讓系統來篩選出合適的Activity。篩選是根據所有的<intent-filter>來篩選。
下面以Action為例:AndroidManifest.xml檔案中,首先被呼叫的Activity要有一個帶有<intent-filter>並且包含<action>的Activity,設定它能處理的Intent,並且category設為"android.intent.category.DEFAULT"。action的name是一個字串,可以自定義,例如我在這裡設成"abcdefg":
<activity
android:name="com.example.app016.SecondActivity">
<intent-filter>
<action android:name="abcdefg"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
然後,在MainActivity,才可以通過這個action name找到上面的Activity。下面兩種方式分別通過setAction和構造方法方法設定Action,兩種方式效果相同。
1、setAction方法
Intent intent = new Intent();
intent.setAction("abcdefg");
startActivity(intent);
2、構造方法直接設定Action
Intent intent = new Intent("abcdefg");
startActivity(intent);
通過設定Action字串,表明自己的意圖,即我想幹嘛,需要由系統解析,找到能夠處理這個Intent的Activity並啟動。比如我想打電話,則可以設定Action為"android.intent.action.DIAL"字串,表示打電話的意圖,系統會找到能處理這個意圖的Activity,例如調出撥號皮膚。
有幾點需要注意:
1、這個Activity其他應用程式也可以呼叫,只要使用這個Action字串。這樣應用程式之間互動就很容易了,因為如此,為了防止應用程式之間互相影響,一般命名方式是包名+Action名,例如這裡命名"abcdefg"就很不合理了,就應該改成"com.example.app016.MyTest"。
2、可以在自己的程式中呼叫其他程式的Action。例如可以在自己的應用程式中呼叫撥號皮膚:
Intent intent = new Intent(Intent.ACTION_DIAL);
// 或者Intent intent = new Intent("android.intent.action.DIAL");
// Intent.ACTION_DIAL是內建常量,值為"android.intent.action.DIAL"
startActivity(intent);
3、一個Activity可以處理多種Action
只要你的應用程式夠牛逼,一個Activity可以看網頁,打電話,發簡訊,發郵件。。。當然可以。
Intent的Action只要是其中之一,就可以開啟這個Activity。
<activity
android:name="com.example.app016.SecondActivity">
<intent-filter>
<!-- 可以處理下面三種Intent -->
<action android:name="com.example.app016.SEND_EMAIL"/>
<action android:name="com.example.app016.SEND_MESSAGE"/>
<action android:name="com.example.app016.DAIL"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
原文:https://blog.csdn.net/xiao__gui/article/details/11392987
相關文章
- Android 顯示、隱藏狀態列和導航欄Android
- Android基礎及應用 Intent的呼叫AndroidIntent
- Android之Intent的setClass和setClassName的區別AndroidIntent
- Android 眼睛 顯示隱藏密碼(ImageView)Android密碼View
- jQuery 效果 – 隱藏和顯示jQuery
- Android呼叫攝像頭拍照並顯示照片Android
- app直播原始碼,Android EditText的游標的顯示和隱藏APP原始碼Android
- 區塊的顯示和隱藏
- Mac顯示和隱藏“隱藏檔案”命令Mac
- 短視訊平臺原始碼,Android 左右滑動顯示和隱藏原始碼Android
- Android Intent ServiceAndroidIntent
- javascript隱藏和顯示div的方法JavaScript
- mac顯示隱藏檔案,取消顯示隱藏檔案Mac
- js顯式轉換和隱式轉換JS
- Selenium 隱式等待與顯示等待的選擇
- CSS點選隱藏和顯示div效果CSS
- Mac OS X 顯示和隱藏檔案Mac
- 元素的隱藏和顯示(display ,visibility ,overflow)
- Android中的intentAndroidIntent
- 在Android中呼叫攝像頭拍照並顯示出來Android
- OSX中隱藏和顯示[隱藏檔案]的命令列命令列
- Mac顯示/不顯示隱藏檔案教程!Mac
- VS(visual studio) C++ 封裝dll,以及其隱式呼叫與顯式呼叫(靜態動態)C++封裝
- iOS 隱藏&顯示tabBariOStabBar
- Android 9 Activity的載入和顯示Android
- Android的UI顯示原理之Surface的建立AndroidUI
- 使用 hide和 show方法來隱藏和顯示 HTML 元素IDEHTML
- selenium(7)強制等待,顯式等待和隱式等待。
- js下拉框實現div顯示和隱藏JS
- jQuery控制div顯示和隱藏程式碼例項jQuery
- 直播平臺原始碼,Android實現密碼顯示與隱藏原始碼Android密碼
- CSS 小結筆記之元素的隱藏與顯示CSS筆記
- Android Libgdx 顯示文字Android
- excel隱藏的部分如何顯示出來 excel裡面怎麼顯示隱藏部分Excel
- Android優化——繪製優化之android系統顯示原理(一)Android優化
- JavaScript動畫方式控制div元素的隱藏和顯示JavaScript動畫
- android7.0以上呼叫系統相機拍照並顯示到ImageView上AndroidView
- Android 12(S) 影像顯示系統 - HWC HAL 初始化與呼叫流程Android