日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android Intent和IntentFilter

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android Intent和IntentFilter 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

android的應用程序包含三種重要的組件:Activity、Service、BroadcastReceiver,應用程序采用一致的方式來啟動他們——都是依靠Intent來進行啟動。Intent就封裝了程序想要啟動的程序意圖,不僅如此,Intent還可用于與被啟動組件交換信息。

?

Intent的屬性及intent-filter配置:

Intent的Component屬性需要接受一個ComponentName對象,ComponentName對象包含如下幾個構造器:

1、ComponentName(String pkg, String cls):創建pkg所在包下的cls類對應的組件

2、ComponentName(Context pkg, String cls):創建pkg所對應的包下的cls類所對應的組件

3、ComponentName(Context pkg, Class<?> cls):創建pkg所對應的包下的cls類所對應的組件

?

上面構造器的本質就是一個,這說明創建一個ComponentName需要指定包名和類名——這就可以唯一地確定一個組件類,這樣應用程序即可根據給定的組件類去啟動特定的組件。

?

ComponentName comp = new ComponentName(this, NewActivity.class); Intent intent = new Intent(); intent.setComponent(comp);startActivity(intent);

上面的也可以寫成如下的形式:

Intent intent = new Intent(this, NewActivity.class);


當程序通過Intent的Component屬性(明確指定啟動那個組件)啟動組件時,被啟動的組件幾乎不再需要使用<inetnt-filter....../>元素進行配置了。

?

Action、Category屬性與intent-filter配置

Intent intent = new Intent(); // 為Intent對象設置Action屬性(屬性值是一個普通的字符串) intent.setAction("helloworld"); startActivity(intent);

上面的代碼會根據Intent來啟動Activity,但是Intent并未以“硬編碼”的方式指定要啟動那么Activity,程序到底會啟動那個Activity這取決于Activity配置中<intent-filter....../>元素的配置。

<inetnt-filter....../>元素里通??砂缦碌淖釉?#xff1a;

1、0~N個<action....../>子元素

2、0~N個<categtory....../>子元素

3、0~1個<data....../>子元素

一個Intent對象只能包含一個Action屬性,程序可以調用Intent的setAction(String str)方法來設置Action屬性,但是一個Intent對象可以包含多個Category屬性,程序可以調用Intent的addCategpry(String str)方法添加Category。當程序創建Intent時,該Intent默認啟動Category屬性值為Intent.CATEGORY_DEFAULT常量(常量的值為android.intent.category.DEFAULT)的組件。當Activity配置中的<action....../>中有一個和Intent中的action屬性相同時,就表明該Activity能響應該Intent。

?

可以通過指定Action、Category調用系統的Activity。

?

Data、Type屬性與intent-filter配置:

Data屬性通常用于向Action屬性提供操作的數據,Data屬性接受一個Uri對象,一個Uri對象通常如下形式的字符串來表示:

content://com.android.contacts/contacts/1

tel:123

上面所示的兩個字符串的冒號前面大致指定了數據的類型,冒號后面的是數據部分。因此一個合法的Uri對象既可以決定操作那種類型的數據,又可指定具體的數據值。

?

Type屬性則用于明確指定Data屬性指定數據的類型或者MIME類型。

?

實際上Data屬性值可以分為兩部分:數據類型部分和數據部分。例如:content://com.android.contacts/contacts/1

content:前綴:表明該數據類型為聯系人信息。

//com.android.contacts/contacts/1:表明操作_id為1的聯系人數據

?

一旦為Intent同時指定了Action、Data屬性,那么android講可根據指定的數據類型來啟動特定的應用程序,并對指定的數據執行相應的操作。

?

Extra屬性:

Intent的Extra屬性通常用于在多個Action之間進行數據交換,Intent的Extra屬性值是一個Bundle對象,Bundle對象就像一個Map對象,可以存放多組key-value對,這樣就可以通過在不同的Activity之間進行數據交換。

?

轉載于:https://www.cnblogs.com/heml/p/3564767.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的android Intent和IntentFilter的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。