導航:首頁 > 操作系統 > 安卓intent什麼意思

安卓intent什麼意思

發布時間:2025-01-18 00:53:46

『壹』 android 顯示intent和隱士inent的區別

以下內容為CSDN上(網名:yuan1590)對安卓顯示意圖和隱身意圖的總結(ps前人種樹,樹,後人乘涼,所以我就粘過來了,希望幫到您):
1. Intent
Android基本的設計理念是鼓勵減少組件間的耦合,因此Android提供了Intent (意圖) ,
Intent提供了一種通用的消息系統,它允許在你的應用程序與其它的應用程序間傳遞 Intent 來執行動作和產生事件。
使用 Intent 可以激活 Android 應用的三個核心組件:活動(Activity)、服務(Service)和廣播接收器(BroadcastReceiver)。

2. 顯式意圖、隱式意圖
Intent可以劃分成顯式意圖和隱式意圖。
顯式意圖:調用Intent.setComponent() 或 Intent.setClassName() 或 Intent.setClass()方法明確指定了組件名的Intent為顯式意圖,顯式意圖明確指定了Intent應該傳遞給哪個組件。
如: 在 MainActicity 中打開一個新的 Acticity -- OtherActivity
1. Intent intent = new Intent();
2. intent.setComponent(new ComponentName(MainActivity.this, OtherActivity.class));
3. 第二行代碼可以更換為:intent.setClass(MainActivity.this, OtherActivity.class);
4. 也可以使用構造器來指定組件: Intent intent = new Intent(MainActivity.this, OtherActivity.class)
三種 「顯式意圖」 指定方式等價
隱式意圖:沒有明確指定組件名的Intent為隱式意圖。
Android系統會根據隱式意圖中設置的動作(action)、類別(category)、數據(data: URI和數據類型)找到最合適的組件來處理這個意圖
例如撥打電話的意圖:
Uri uri = Uri.parse("tel:" + phoneCode);
Intent intent = new Intent(Intent.ACTION_CALL, uri);

對於隱式意圖,Android是怎樣尋找到這個最合適的組件呢?記的前面我們在定義活動時,指定了一個intent-filter,Intent Filter(意圖過濾器)其實就是用來匹配隱式Intent的,當一個意圖對象被一個意圖過濾器進行匹配測試時,只有三個方面會被參考到:動作、數據(URI以及數據類型)和類別。

動作測試(Action test)
一個意圖對象只能指定一個動作名稱,而一個過濾器可能列舉多個動作名稱。如果意圖對象或過濾器沒有指定任何動作,結果將如下:
+ 如果過濾器沒有指定任何動作,那麼將阻塞所有的意圖,因此所有的意圖都會測試失敗。沒有意圖能夠通過這個過濾器。
<intent-filter><!-- 空的 --></intent-filter>
+ 另一方面,只要過濾器包含至少一個動作,一個沒有指定動作的意圖對象自動通過這個測試

類別測試(Category test)
對於一個能夠通過類別匹配測試的意圖,意圖對象中的類別必須匹配過濾器中的類別。這個過濾器可以列舉另外的類別,但它不能遺漏在這個意圖中的任何類別。
原則上一個沒有類別的意圖對象應該總能夠通過匹配測試,而不管過濾器里有什麼。大部分情況下這個是對的。
但有一個例外,Android把所有傳給startActivity()的隱式意圖當作他們包含至少一個類別:"android.intent.category.DEFAULT" (CATEGORY_DEFAULT常量)。
因此自定義 Activity 的時候,不要以為光定義一個 action 就夠了。這樣用 startActivity() 來激活這個 Activity 的時候將一直報錯。
原因就是,他內部要求去匹配 android.intent.category.DEFAULT 這個類別。

因此,想要接收隱式意圖的活動必須在它們的意圖過濾器中包含"android.intent.category.DEFAULT"。
(帶"android.intent.action.MAIN"和"android.intent.category.LAUNCHER"設置的過濾器是例外)

數據測試(Data test)
當一個意圖對象中的URI被用來和一個過濾器中的URI比較時,比較的是URI的各個組成部分。
例如,如果過濾器僅指定了一個scheme,所有該scheme的URIs都能夠和這個過濾器相匹配;
如果過濾器指定了一個scheme、主機名但沒有路經部分,所有具有相同scheme和主機名的URIs都可以和這個過濾器相匹配,而不管它們的路經;
如果過濾器指定了一個scheme、主機名和路經,只有具有相同scheme、主機名和路經的URIs才可以和這個過濾器相匹配。
當然,一個過濾器中的路徑規格可以包含通配符,這樣只需要部分匹配即可。
數據測試同時比較意圖對象和過濾器中指定的URI和數據類型。規則如下:
a. 一個既不包含URI也不包含數據類型的意圖對象僅在過濾器也同樣沒有指定任何URIs和數據類型的情況下才能通過測試。
b. 一個包含URI但沒有數據類型的意圖對象僅在它的URI和一個同樣沒有指定數據類型的過濾器里的URI匹配時才能通過測試。
這通常發生在類似於mailto:和tel:這樣的URIs上:它們並不引用實際數據。
c. 一個包含數據類型但不包含URI的意圖對象僅在這個過濾器列舉了同樣的數據類型而且也沒有指定一個URI的情況下才能通過測試。
d. 一個同時包含URI和數據類型(或者可從URI推斷出數據類型)的意圖對象可以通過測試,如果它的類型和過濾器中列舉的類型相匹配的話。
如果它的URI和這個過濾器中的一個URI相匹配或者它有一個內容content:或者文件file: URI而且這個過濾器沒有指定一個URI,那麼它也能通過測試。
換句話說,一個組件被假定為支持content:和file: 數據如果它的過濾器僅列舉了一個數據類型。

『貳』 安卓廣播接收器怎麼判斷是哪個應用發送的想要只接收自身應用廣播,怎麼實現

安卓廣播接收器Intent,它有提供過濾器功能,也就是開發者定義過濾條件,只有是這個條件的廣播才接收,這樣就可以接收指定廣播。這也是安卓廣播的基礎知識功能,具體自己查閱相關資料,很簡單的。

『叄』 android中intent什麼意思

英文里 Intent是「意向、打算」的意思,其實就是告訴別人你的意圖的意思了,這么理解Android裡面的Intent也就不難了。

書面化的解釋是:
Android中提供了Intent機制來協助應用間的交互與通訊,Intent負責對應用中一次操作的動作、動作涉及數據、附加數據進行描述,Android則根據此Intent的描述,負責找到對應的組件,將 Intent傳遞給調用的組件,並完成組件的調用。Intent不僅可用於應用程序之間,也可用於應用程序內部的Activity/Service之間的交互。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調用者之間的解耦。

『肆』 請問,關於安卓廣播接收者的問題,安卓中onReceive方法中的參數context和intent

context是上下文環境,一般是說明你這個在哪個包裡面進行的活動還有載入資源值也要用到,你可以先記住有這么一個東西,intent用於頁面跳轉可指定包名顯式跳轉,也可以設定參數進行隱式跳轉,多用用就知道了,建議自己手打不要光看書

『伍』 安卓軟體幾個部分組成

(抱歉,這是我在其它地方粘貼的。頂一下吧)一般來說Android 程序主要由下列四個部分組成,分別是:活動(Activity) - 用於表現功能服務(Service) - 相當於後台運行的Activity廣播接收器(BroadcastReceiver) - 用於接收廣播意圖(Intent)- 用於連接以上各個組件,並在其間傳遞消息
1 Activity 介紹
Android 中,Activity 是所有程序的根本,所有程序的流程都運行在Activity 之中,Activity可以算是開發者遇到的最頻繁,也是Android 當中最基本的模塊之一。在Android的程序當中,Activity 一般代表手機屏幕的一屏。如果把手機比作一個瀏覽器,那麼Acitivity就相當於一個網頁。在Activity 當中可以添加一些Button、Check box 等控制項。可以看到Activity 的概念和網頁的概念相當類似。 一般一個Android 應用是由多個Activity 組成的。這多個Activity 之間可以進行相互跳轉,例如,按下一個Button 按鈕後,可能會跳轉到其他的Activity。和網頁跳轉稍微有些不一樣的是,Activity 之間的跳轉有可能返回值,例如,從Activity A 跳轉到Activity B,那麼當Activity B 運行結束的時候,有可能會給Activity A 一個返回值。這樣做在很多時候是相當方便的。 當打開一個新的屏幕時,之前一個屏幕會被置為暫停狀態,並且壓入歷史堆棧中。用戶可以通過回退操作返回到以前打開過的屏幕。我們可以選擇性的移除一些沒有必要保留的屏幕,因為Android 會把每個應用的開始到當前的每一個屏幕保存在堆棧中。Activity 是由Android 系統進行維護的,它也有自己的生命周期,即它的一個產生、運行、銷毀的一個周期,對於Activity,關鍵是其生命周期的把握,其次就是狀態的保存和恢復(onSaveInstanceState onRestoreInstanceState),以及Activity 之間的跳轉和數據傳輸(intent)。
2 Service 介紹
Service 是android 系統中的一種組件,它跟Activity 的級別差不多,但是他不能自己運行,只能後台運行,並且可以和其他組件進行交互。Service 是沒有界面的長生命周期的代碼。Service 是一種程序,它可以運行很長的時間,但是它卻沒有用戶界面。這么說有點枯燥,我們來看個例子。打開一個音樂播放器的程序,這個時候若想上網了,那麼,我們打開Android 的瀏覽器,這個時候雖然我們已經進入了瀏覽器這個程序,但是,歌曲的播放並沒有停止,而是在後台繼續一首接著一首的播放。其實這個播放就是由播放音樂的Service進行控制。當然這個播放音樂的Service也可以停止,例如,當播放列表裡邊的歌曲都結束,或者用戶按下了停止音樂播放的快捷鍵等。service 可以在和多場合的應用中使用,比如播放多媒體的時候用戶啟動了其他Activity這個時候程序要在後台繼續播放,比如檢測SD 卡上文件的變化,再或者在後台記錄你地理信息位置的改變等等,總之服務嘛,總是藏在後頭的。
3 BroadcastReceiver 介紹
在Android 中,Broadcast 是一種廣泛運用的在應用程序之間傳輸信息的機制。而BroadcastReceiver 是對發送出來的Broadcast進行過濾接受並響應的一類組件。可以使用BroadcastReceiver 讓應用對一個外部的事件做出響應。這是非常有意思的,例如,當電話呼入這個外部事件到來的時候,可以利用BroadcastReceiver 進行處理。例如,當下載一個程序成功完成的時候,仍然可以利用BroadcastReceiver 進行處理。BroadcastReceiver不能生成UI,也就是說對於用戶來說不是透明的,用戶是看不到的。BroadcastReceiver通過NotificationManager 來通知用戶這些事情發生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注冊,也可以在運行時的代碼中使用Context.registerReceiver()進行注冊。只要是注冊了,當事件來臨的時候,即使程序沒有啟動,系統也在需要的時候啟動程序。各種應用還可以通過使用Context.sendBroadcast () 將它們自己的intent broadcasts廣播給其他應用程序。注冊BroadcastReceiver有兩種方式:
4 Intent 介紹
Intent 是一個將要執行的動作的抽象的描述,一般來說是作為參數來使用,由Intent來協助完成android 各個組件之間的通訊。Intent 負責對應用中一次操作的動作、動作涉及數據、附加數據進行描述,Android 則根據此Intent 的描述,負責找到對應的組件,將Intent 傳遞給調用的組件,並完成組件的調用。因此,Intent 在這里起著一個媒體中介的作用,專門提供組件互相調用的相關信息,實現調用者與被調用者之間的解耦。例如,在一個聯系人維護的應用中,當我們在一個聯系人列表屏幕(假設對應的Activity 為listActivity)上,點擊某個聯系人後,希望能夠跳出此聯系人的詳細信息屏幕(假設對應的Activity為detailActivity)。為了實現這個目的,listActivity需要構造一個Intent,這個Intent 用於告訴系統,我們要做"查看"動作,此動作對應的查看對象是"某聯系人",然後調用startActivity(Intent intent),將構造的Intent 傳入,系統會根據此Intent 中的描述,到ManiFest中找到滿足此Intent 要求的Activity,系統會調用找到的Activity,即為detailActivity,最終傳入Intent,detailActivity 則會根據此Intent中的描述,執行相應的操作。Intent 主要是用來啟動其他的activity 或者service,所以可以將intent 理解成activity 之間的粘合劑。Intent具體有一下3 種形式: 通過startActivity 方法來啟動一個新的Activity; 通過broadcast Intent 機制可以將一個Intent 發送給任何對這個Intent 感興趣的BroadcastReceiver; 通過startService (Intent) 或bindService(Intent,ServiceConnection,int) 來和後台的Service 進行交互。

閱讀全文

與安卓intent什麼意思相關的資料

熱點內容
我的世界pcl啟動器怎麼加入伺服器 瀏覽:253
傳奇源碼擴充人物結構 瀏覽:844
購買多個文件夾 瀏覽:774
其他app如何投屏到微光視頻教學 瀏覽:340
車輛不解壓會給大綠本嗎 瀏覽:789
塔式伺服器如何裝機 瀏覽:448
程序員接外包會犯法嗎 瀏覽:588
如果安卓的充電器頭壞了該怎麼辦 瀏覽:804
壓縮包太多了怎麼一起解壓 瀏覽:669
文件夾加時間 瀏覽:226
三星固態硬碟加密軟體 瀏覽:715
程序員開車的基本常識 瀏覽:322
中國債券市場pdf 瀏覽:969
原神15版本未加密版本 瀏覽:654
c盤壓縮文件可以刪除嗎 瀏覽:992
單片機鍵盤分類 瀏覽:391
手機app怎麼老是進不去 瀏覽:954
安卓游戲玩模擬器用什麼手柄 瀏覽:33
退出at模式命令 瀏覽:943
php供求平台源碼 瀏覽:134