當前位置:首頁 » 安卓系統 » Filterandroid

Filterandroid

發布時間: 2025-07-13 09:57:44

『壹』 android intent filter 怎麼獲得數據

千 鋒扣丁學堂iOS開發為您解答:
1. Android把安裝的包中可獲得的Intent Filter放到一個列表中。
2. 動作和與正在解析的Intent的種類不關聯的Intent Filter會從列表中刪除。
2.1. 動作匹配指Android Intent Filter包含特定的動作或沒有指定的動作。一個Intent Filter有一個或多個定義的動作,如果沒有任何一個能與Intent指定的動作匹配的話,這個Intent Filter在算作是動作匹配檢查失敗。
2.2. 種類匹配更為嚴格。Intent Filter必須包含所有在解析的Intent中定義的種類。一個沒有特定種類的Intent Filter只能與沒有種類的Intent匹配。
3. Intent的數據URI中的部分會與Intent Filter中的data標簽比較。如果Intent Filter定義scheme,host/authority,path或mimetype,這些值都會與Intent的URI比較。任何不匹配都會導致Intent Filter從列表中刪除。
沒有指定data值的Android Intent Filter會和所有的Intent數據匹配。
3.1. mimetype是正在匹配的數據的數據類型。當匹配數據類型時,你可以使用通配符來匹配子類型(例如,earthquakes/*)。如果Intent Filter指定一個數據類型,它必須與Intent匹配;沒有指定數據的話全部匹配。
3.2. scheme是URI部分的協議——例如,http:,mailto:,tel:。
3.3. host-name或「data authority」是介於URI中scheme和path之間的部分。匹配主機名時,Intent Filter的scheme也必須通過匹配。

3.4. 數據path是緊接在「data authority」的後面(例如,/ig)。path只在scheme和host-name部分都匹配的情況下才匹配。
4. 如果這個過程中多於一個組件解析出來的話,它們會以優先度來排序,可以在Android Intent Filter的節點里添加一個可選的標簽。最高等級的組件會返回。

Android本地的應用程序組件和第三方應用程序一樣,都是Intent解析過程中的一部分。它們沒有更高的優先度,可以被新的Activity完全的代替,這些新的Activity宣告自己的Intent Filter能響應相同的動作請求。

『貳』 android有序廣播和無序廣播的區別

BroadcastReceiver所對應的廣播分兩類:普通廣播和有序廣播。
普通廣播:通過Context.sendBroadcast()方法來發送,它是完全非同步的。
所有的receivers(接收器)的執行順序不確定,因此所有的receivers(接收器)接收broadcast的順序不確定。
這種方式效率更高,但是BroadcastReceiver無法使用setResult系列、getResult系列及abort(中止)系列API

有序廣播:是通過Context.sendOrderedBroadcast來發送,所有的receiver依次執行。
BroadcastReceiver可以使用setResult系列函數來結果傳給下一個BroadcastReceiver,通過getResult系列函數來取得上個BroadcastReceiver返回的結果,並可以abort系列函數來讓系統丟棄該廣播,使用該廣播不再傳送到別的BroadcastReceiver。
可以通過在intent-filter中設置android:priority屬性來設置receiver的優先順序,優先順序相同的receiver其執行順序不確定。
如果BroadcastReceiver是代碼中注冊的話,且其intent-filter擁有相同android:priority屬性的話,先注冊的將先收到廣播。

有序廣播,即從優先順序別最高的廣播接收器開始接收,接收完了如果沒有丟棄,就下傳給下一個次高優先順序別的廣播接收器進行處理,依次類推,直到最後。如果多個應用程序設置的優先順序別相同,則誰先注冊的廣播,誰就可以優先接收到廣播。
這里接收簡訊的廣播是有序廣播,因此可以設置你自己的廣播接收器的級別高於系統原來的級別,就可以攔截簡訊,並且不存收件箱,也不會有來信提示音。
實現方法是:
<receiver Android:name=".SmsReceiver">

<intent-filter android:priority="100">

<action android:name="android.provider.Telephony.SMS_RECEIVED"/>

</intent-filter>

</receiver>
裡面的android:priority="100"就是設定廣播接收器的級別,這個值從1000~-1000,數值越大,優先順序別就越高。
希望幫助到你~~感謝採納

『叄』 如何查看Android系統當前發送了什麼廣播

要注冊接受廣播的處理程序,有兩種方式在AndroidManifest.xml重注冊,比如監聽系統的開機廣播和屏幕解鎖廣播這樣,一旦有定義的action發出來,BootCompletedReceiver的onReceive方法就會回調了,這樣的監聽,不需要你的app已經在運行。2.在程序中動態創建監聽器,比如還是解鎖廣播,在Activity的onCreate()中生成一個IntentFilter對象IntentFilterfilter=newIntentFilter();//為IntentFilter添加一個Actionfilter.addAction("android.intent.action.USER_PRESENT");bootCompletedReceiver=newUserPresentReceiver();registerReceiver(smsReceiver,filter);在onDestroy的時候去注冊unregisterReceiver(bootCompletedReceiver);這樣的方式只有在Activity生命周期onCreate()-onDestroy()之間有效。對於一些特俗的系統級別的廣播,即使你按照上面的任何一種方式做了,也可能監聽不到,這是android系統做了保護了,網上查一下就知道了。

熱點內容
php判斷字元是否相等 發布:2025-07-13 19:17:21 瀏覽:614
電腦直播唱歌電腦需要什麼配置 發布:2025-07-13 19:03:45 瀏覽:88
config連接資料庫 發布:2025-07-13 19:02:24 瀏覽:953
bt文件解壓 發布:2025-07-13 19:02:16 瀏覽:744
比較便宜的雲伺服器 發布:2025-07-13 18:29:59 瀏覽:406
切換ftp 發布:2025-07-13 18:29:07 瀏覽:738
銳龍哪個配置最高畫質 發布:2025-07-13 18:22:34 瀏覽:196
壓縮機工作原理圖 發布:2025-07-13 18:10:15 瀏覽:39
黑暗追求者安卓怎麼聯機 發布:2025-07-13 18:10:07 瀏覽:617
北大保安自學編程 發布:2025-07-13 18:09:58 瀏覽:858