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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android官方开发文档Training系列课程中文版:与其它APP交互之允许其它APP启动你的Activity

發(fā)布時間:2024/7/5 Android 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android官方开发文档Training系列课程中文版:与其它APP交互之允许其它APP启动你的Activity 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文地址:http://android.xsoftlab.net/training/basics/intents/filters.html

在前兩節(jié)課程中我們只關(guān)注了事情的一面:從你的APP啟動其它APP。但是如果你的APP可以執(zhí)行一些功能,并且這些功能可以被其它APP所利用,那么你可以做一個功能來響應(yīng)其它APP的請求。舉個例子,如果你構(gòu)建了一個社交APP并且可以給用戶的朋友分享消息或者照片,那么這是支持ACTION_SEND意圖的最佳興趣點,所以用戶可以從其它APP中啟動一個”share”行為,然后啟動你的APP來完成這個功能。

為了允許其它APP可以啟動你的Activity,你需要添加一個< intent-filter>元素標(biāo)簽到清單文件中的對應(yīng)的< activity>標(biāo)簽元素下。

當(dāng)APP被安裝到設(shè)備上之后,系統(tǒng)會識別你的意圖過濾器,并且添加該信息到所有支持的內(nèi)部意圖目錄中。當(dāng)APP使用了隱式意圖調(diào)用了startActivity()或startActivityForResult(),那么系統(tǒng)會尋找那些activity可以響應(yīng)這個意圖。

添加意圖過濾器

為了可以適當(dāng)?shù)亩xActivity可以處理哪一種意圖,你添加每一個意圖過濾器應(yīng)該盡可能的指明activity可以接受的行為類型和數(shù)據(jù)類型。

系統(tǒng)可能通過給定的Intent發(fā)送到activity,如果這個activity有一個意圖過濾器正好可以完全匹配以下的Intent對象標(biāo)準(zhǔn):

Action:
這個行為可以執(zhí)行的名稱。通常平臺上定義的值比如是ACTION_SEND或ACTION_VIEW。

在意圖過濾器中使用< action>元素標(biāo)簽來指定該值。該值必須是這個行為的全稱,而不是API常量(請看下面的例子)。

Data:
有關(guān)這個意圖的數(shù)據(jù)描述。

在意圖過濾器中使用< data>元素標(biāo)簽指定該值。使用該元素的更多屬性,你可以僅僅指定MIME類型,URI前綴類型,URI計劃類型,或者這些類型的組合,以及可以接收的其它數(shù)據(jù)類型。

Note:如果你不需要聲明Uri數(shù)據(jù)的指定類型(比如你的activity處理其它種類的附加數(shù)據(jù),而不是URI),你應(yīng)該通過android:mimeType屬性聲明activity可以處理的數(shù)據(jù)類型,比如text/plain或者image/jpeg。

Category:
提供了一種附加方式來描述activity處理intent,通常與啟動的用戶手勢或者位置有關(guān)。這里有幾個系統(tǒng)支持的不同的分類,但是大多數(shù)是很少使用的。然而,所有的隱式意圖會在默認(rèn)情況下使用CATEGORY_DEFAULT定義。

可以在意圖過濾器中使用< category>元素標(biāo)簽指定該值。

在意圖過濾器中,你可以通過在意圖過濾器中使用相應(yīng)的XML元素來聲明activity可以接收的意圖標(biāo)準(zhǔn)。

舉個例子,這里的activity可以處理ACTION_SEND意圖,當(dāng)數(shù)據(jù)類型為文本或者圖像時。

<activity android:name="ShareActivity"><intent-filter><action android:name="android.intent.action.SEND"/><category android:name="android.intent.category.DEFAULT"/><data android:mimeType="text/plain"/><data android:mimeType="image/*"/></intent-filter> </activity>

每個到來的Intent都只會指定一個行為和一個數(shù)據(jù)類型,但是在每一個過濾器中聲明多個< action>,< category>,和< data>元素的話,這就沒問題了。

如果任意的兩對行為和數(shù)據(jù)會在他們的行為中相互排斥的話,你應(yīng)該創(chuàng)建單獨(dú)的意圖過濾器來指明哪個行為可以接收,當(dāng)也匹配到相應(yīng)的數(shù)據(jù)類型時。

舉個例子,假設(shè)activity在ACTION_SEND行為下或者ACTION_SENDTO行為下都可以處理文本和圖像。在這種情況下,你必須定義兩個單獨(dú)的意圖過濾器,因為ACTION_SENDTO意圖必須使用數(shù)據(jù)Uri指定接收地址通過使用send或sendto URI計劃:

<activity android:name="ShareActivity"><!-- filter for sending text; accepts SENDTO action with sms URI schemes --><intent-filter><action android:name="android.intent.action.SENDTO"/><category android:name="android.intent.category.DEFAULT"/><data android:scheme="sms" /><data android:scheme="smsto" /></intent-filter><!-- filter for sending text or images; accepts SEND action and text or image data --><intent-filter><action android:name="android.intent.action.SEND"/><category android:name="android.intent.category.DEFAULT"/><data android:mimeType="image/*"/><data android:mimeType="text/plain"/></intent-filter> </activity>

Note:為了可以接收隱式意圖,你必須在過濾器中包含類別CATEGORY_DEFAULT。startActivity()和startActivityForResult()方法會對待所有的Intent,仿佛他們都聲明了CATEGORY_DEFAULT類別。如果你沒有在意圖過濾器中聲明它,那么將不會有隱式意圖傳送到該activity中。

有關(guān)更多關(guān)于發(fā)送和接收ACTION_SEND意圖來執(zhí)行社會分享行為的相關(guān)信息,請參見課程: Receiving Simple Data from Other Apps.

在Activity中處理意圖

為了決定要在activity中采取什么行為,你可以從啟動activity的Intent中讀取信息。

隨著activity被啟動,你可以調(diào)用getIntent()方法獲得啟動該Activity的Intent。你可以在activity的任意生命周期內(nèi)做這樣的事情,但是你通常應(yīng)該在較早的回調(diào)方法中做這些事情,比如onCreate()或onStart()。

@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);// Get the intent that started this activityIntent intent = getIntent();Uri data = intent.getData();// Figure out what to do based on the intent typeif (intent.getType().indexOf("image/") != -1) {// Handle intents with image data ...} else if (intent.getType().equals("text/plain")) {// Handle intents with text ...} }

返回結(jié)果

如果需要將結(jié)果返回給調(diào)用該activity的那個activity,那么只需要簡單的調(diào)用setResult()方法然后設(shè)置一個結(jié)果碼以及結(jié)果Intent。當(dāng)你的操作完成并且用戶應(yīng)該返回原來的那個activity是,調(diào)用finish()方法來關(guān)閉你的activity,像下面這樣:

// Create intent to deliver some kind of result data Intent result = new Intent("com.example.RESULT_ACTION", Uri.parse("content://result_uri"); setResult(Activity.RESULT_OK, result); finish();

你需要每一次都給結(jié)果指定一個結(jié)果碼。通常情況下,要不然是RESULT_OK或者是RESULT_CANCELED。必要的話,可以在Intent中提供附加數(shù)據(jù)。

Note:默認(rèn)情況下,結(jié)果會設(shè)置RESULT_CANCELED。所以,如果用戶在完成功能之前或者在你設(shè)置結(jié)果之前按下了返回按鈕,那么原來的activity會接收到”canceled”結(jié)果。

如果你簡單的需要返回一個整型,這個整型指明了若干個結(jié)果選項,那么你可以設(shè)置結(jié)果碼為比0大的任何值。如果你使用了結(jié)果碼來傳遞一個整型值,那么你不再需要包含Intent對象,你可以調(diào)用setResult()方法,然后只傳一個結(jié)果碼進(jìn)去:

setResult(RESULT_COLOR_RED); finish();

在這個例子中,這可能對結(jié)果有損傷,所以結(jié)果碼是一個本地變量。這種情況在你自己的APP中運(yùn)行的話,效果會很好,因為原來的activity可以接收到結(jié)果碼,然后引用一個公開的常量來判斷結(jié)果碼的值。

Note:這里不需要檢查你的activity是否是通過startActivity()或者startActivityForResult()啟動的。那個啟動你activity的activity可能希望會有個結(jié)果返回。如果原來的activity調(diào)用了startActivityForResult(),那么系統(tǒng)會傳遞setResult()結(jié)果,否則,這個結(jié)果會被忽略。

總結(jié)

以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:与其它APP交互之允许其它APP启动你的Activity的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中国人与拘一级毛片 | 熟女丰满老熟女熟妇 | 人人妻人人玩人人澡人人爽 | 中国少妇乱子伦视频播放 | 免费国产黄色网址 | 美味的客房沙龙服务 | 亚洲啪啪网 | 国产乱码一区二区三区在线观看 | 青青草精品在线 | 亚洲高清久久久 | av草逼| 青青草网址 | 一区二区三区视频在线观看 | 91精品婷婷国产综合久久竹菊 | 中文字幕 国产 | 无码人妻aⅴ一区二区三区69岛 | 一区二区亚洲视频 | 羞辱狗奴的句子有哪些 | 中国毛片基地 | 国产熟女高潮一区二区三区 | 男女天堂av | 成人av在线播放网站 | av资源新版在线天堂 | 免费无码不卡视频在线观看 | 欧美精品一区在线发布 | 五月天看片 | 男生捅女生肌肌 | 日韩中出 | 男人的天堂网在线 | 亚洲一区二区不卡视频 | 绿帽h啪肉np辣文 | 女同性恋一区二区三区 | 嫩草在线看 | 麻豆av在线免费观看 | 亚洲私人影院 | 最近中文字幕在线中文视频 | 人体内射精一区二区三区 | 亚洲国产日韩在线一区 | 黄色大片在线免费观看 | 成人av电影在线观看 | 91视频 - 88av| 黑人操亚洲人 | 午夜精品视频在线 | 亚洲九九色 | 日韩干 | 人成亚洲| 欧美日韩乱 | 香蕉av777xxx色综合一区 | 粗大的内捧猛烈进出视频 | 日韩一卡 | 日批视频免费 | 欧美一区2区 | 国产三级精品三级在线 | 人人干狠狠干 | 日韩国产在线播放 | 黄色网战大全 | 特级西西444www大精品视频免费看 | 久久99免费视频 | 亚洲12p | 婷婷九九 | 91老师片黄在线观看 | 东北少妇av | 国产馆在线观看 | 男女在线视频 | 在线艹 | 亚洲福利视频网站 | 午夜精品影院 | 精品乱码一区二区三区四区 | 少妇性xxxxxxxxx色武功 | 99re视频这里只有精品 | 欧美精品一区二区三区四区五区 | 葵司一区二区 | 欧美色吊丝 | 爆乳熟妇一区二区三区 | 一区二区精品区 | 中文字幕一区二区三区四区视频 | 成人福利午夜 | 日韩高清成人 | 男人操女人动漫 | 日韩精品亚洲精品 | 成人精品一区日本无码网 | 国产精品美女高潮无套 | 精品人妻伦九区久久aaa片 | 久久精品中文 | 伊人手机在线视频 | 98国产精品| 日韩中文字幕观看 | 日本黄色xxxx| 调教撅屁股啪调教打臀缝av | 91精品国产综合久久久蜜臀 | 91香蕉久久 | 在线观看中文字幕视频 | 在线中文字幕av | 最新中文字幕一区 | 青青艹av| 91丨porny丨在线中文 | 国产成人午夜精华液 | 久久网亚洲 | 欧美日本在线观看 |