我有搜索Android文檔和一些瘋狂的原因,我無法找到所有可用的意圖過濾器的列表。Android - 如何獲取所有可用的意圖過濾器的列表?
我發現一個意圖過濾器,它會做這樣的事情,我通知通過廣播接收器一個特定的活動(例如瀏覽器或電子郵件)已經開始或前景。任何人都可以幫助我。
我有搜索Android文檔和一些瘋狂的原因,我無法找到所有可用的意圖過濾器的列表。Android - 如何獲取所有可用的意圖過濾器的列表?
我發現一個意圖過濾器,它會做這樣的事情,我通知通過廣播接收器一個特定的活動(例如瀏覽器或電子郵件)已經開始或前景。任何人都可以幫助我。
你不會去找那個。意圖過濾器由應用程序定義。你不得不看的文檔,你感興趣的paritcular應用。
(部分答案)IntentFilters在應用程序中包含的.apk文件AndroidManifest.xml文件中定義。 (中 - > - > - > XML元素,像這樣:
我還沒有找到一個API,用於搜索在存儲設備上所有的apk文件中定義的所有意圖系統搜索列表的所有意圖:android.content.Context.startActivity(意圖意圖) 它調用android.app.ActivityManagerNative.startActivity()中的本機方法,它使用進程間通信(IPC)機制(使用序列化的「包裹」對象)來搜索意圖和啓動活動。所以,我可以找到它是如何真正做。
看樣子,你可以得到讀取訪問的apk文件(馬NY存儲在/system/app/*.apk)。 .apk文件是一個.jar文件,並且AndroidManifest.xml文件可用,因此程序應該能夠讀取和解析清單並找到IntentFilters - 但應該有API來簡化它。
我剛剛嘗試了它,AndroidManifest.xml以某種方式被髮送。我可以讀一些字符串,但其餘的只是字節碼。 – Nulano 2014-07-14 09:43:04
有GET_INTENTS_FILTER - 宣佈將在未來被用於查詢意圖過濾器,也見http://code.google.com/p/android/issues/detail?id=3217
然而,在Android團隊優先很小。任何人都要提交補丁?
PackageExplorer列出你的設備的應用程序中定義的所有意圖過濾器
要回答你的問題:您創建的意圖過濾器(S)你想被用來使你的活動,在選擇時,一個程序尋找服務或活動。因此,包中的每個活動都會定義它自己的意向過濾器列表。
我發現它非常有用的一個設備上的所有應用程序中定義的所有意向過濾器的列表 - 所以會知道哪些應用系統時,被處理的意圖將調用。我在Android Market上放了一個免費應用程序,搜索「包資源管理器」,搜索它可以在設備上找到的所有應用程序,解碼AndroidManifest.xml文件並顯示所有應用程序定義的所有意圖過濾器的列表。所有意圖過濾器的表格可以按行動,類別,數據字段(即方案或mimetype),包裹名稱或意向過濾器類型進行排序,以便您可以在設備上找到響應各種行動或類別的所有活動信息。
Package Explorer中還收集清單中的所有用途的權限字段和顯示這些應用程序需要哪些權限列表。所以你可以找到所有使用'SEND_SMS'或類似的軟件包。點擊軟件包的名稱將顯示該軟件包的解碼(未壓縮二進制)AndroidManifest.xml。
就是這樣 - https://play.google.com/store/apps/details?id=fr.xgouchet.packageexplorer&hl=en? – 2015-08-13 06:38:50
@techtonik是的,這顯然是。這是每個應用的_Broadcast Receivers_部分,它對我來說工作正常。 – Guillaume 2015-09-25 15:01:43
有一個「數據庫」在http://www.openintents.org/en/試圖收集知意圖過濾器。 Intent列舉了一些內容。
這個職位是舊的,但任何人從安裝在一個特定的Android應用程序尋找艙單信息dwld這GOD應用:
https://play.google.com/store/apps/details?id=jp.susatthi.ManifestViewer
你如何在代碼中做到這一點? – 2014-08-30 23:16:55
ManifestViewer現在在試圖查看意圖時崩潰 – 2015-07-27 21:36:57
您可以檢查SDK標準動作和類別列表/platforms/android-x/data/broadcast_actions.txt
抱歉,我的錯誤標準類別在'categories.txt'上 – IronBlossom 2013-10-23 04:47:45
您可以編輯自己的帖子,並提供一個鏈接到您發現的位置? – not2qubit 2016-04-22 15:54:27
如果您關閉設備,您可以只運行以下命令:
adb shell dumpsys軟件包r
這會給你一個所有靜態註冊的意圖過濾器的列表。
不幸的是,它轉儲了數組PackageManagerService.mActivities,這是外部不可用的。所以你不能通過API訪問意圖過濾器。 – Oleksandr 2015-04-16 12:21:03
在Tom Fraser的回答中展開,最好的方法是使用dumpsys進行grep和排序。
dumpsys activity broadcasts |grep -iE ".+\.[0-9A-Z_\-]+:$" |sort
grep的表現會確保在這樣的...blahblah.SOME_INTENT:
格式的意圖結束只抓線。它可能並不全面,但這是一個好的開始。
在我的情況(Linux)中,我必須刪除'$'–,可能是由於EOL。 – pevik 2015-11-09 08:14:38
Ahan讓我看看那個...... – 2010-11-04 07:08:11
我可以告訴你,你將無法確定大多數應用程序什麼時候開始,並且幾乎肯定無法知道它們什麼時候進入前臺。當然,如果您需要此信息用於特定目的,歡迎您修改android固件。但是否則這是一個安全問題。 – Falmarri 2010-11-04 07:21:54
不幸的是,只有一小部分應用程序爲他們的意圖提供了文檔... – pleerock 2012-08-20 03:36:27