ConnectivityManager.RequestNetwork 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
RequestNetwork(NetworkRequest, ConnectivityManager+NetworkCallback, Handler, Int32)
[Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;I)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_net_ConnectivityManager_NetworkCallback_Landroid_os_Handler_IHandler", ApiSince=26)]
public virtual void RequestNetwork(Android.Net.NetworkRequest request, Android.Net.ConnectivityManager.NetworkCallback networkCallback, Android.OS.Handler handler, int timeoutMs);
[<Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;I)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_net_ConnectivityManager_NetworkCallback_Landroid_os_Handler_IHandler", ApiSince=26)>]
abstract member RequestNetwork : Android.Net.NetworkRequest * Android.Net.ConnectivityManager.NetworkCallback * Android.OS.Handler * int -> unit
override this.RequestNetwork : Android.Net.NetworkRequest * Android.Net.ConnectivityManager.NetworkCallback * Android.OS.Handler * int -> unit
參數
- request
- NetworkRequest
- networkCallback
- ConnectivityManager.NetworkCallback
- handler
- Handler
- timeoutMs
- Int32
- 屬性
備註
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestNetwork(NetworkRequest, ConnectivityManager+NetworkCallback, Int32)
[Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;I)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_net_ConnectivityManager_NetworkCallback_IHandler", ApiSince=26)]
public virtual void RequestNetwork(Android.Net.NetworkRequest request, Android.Net.ConnectivityManager.NetworkCallback networkCallback, int timeoutMs);
[<Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;I)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_net_ConnectivityManager_NetworkCallback_IHandler", ApiSince=26)>]
abstract member RequestNetwork : Android.Net.NetworkRequest * Android.Net.ConnectivityManager.NetworkCallback * int -> unit
override this.RequestNetwork : Android.Net.NetworkRequest * Android.Net.ConnectivityManager.NetworkCallback * int -> unit
參數
- request
- NetworkRequest
- networkCallback
- ConnectivityManager.NetworkCallback
- timeoutMs
- Int32
- 屬性
備註
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestNetwork(NetworkRequest, PendingIntent)
請求一個網路滿足一組 NetworkCapabilities。
[Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/app/PendingIntent;)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_app_PendingIntent_Handler", ApiSince=22)]
public virtual void RequestNetwork(Android.Net.NetworkRequest request, Android.App.PendingIntent operation);
[<Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/app/PendingIntent;)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_app_PendingIntent_Handler", ApiSince=22)>]
abstract member RequestNetwork : Android.Net.NetworkRequest * Android.App.PendingIntent -> unit
override this.RequestNetwork : Android.Net.NetworkRequest * Android.App.PendingIntent -> unit
參數
- request
- NetworkRequest
NetworkRequest 描述這個請求。
- operation
- PendingIntent
當網路可用時執行的動作(對應於通話內容 NetworkCallback#onAvailable )。 通常來自 PendingIntent#getBroadcast。 不可為空值。
- 屬性
備註
請求一個網路滿足一組 NetworkCapabilities。
此函式的行為與接受 NetworkCallback 的版本相同,但使用的是 NetworkCallback a PendingIntent 。 這表示請求可能會比呼叫應用程式更久,並在找到合適的網路時被回撥。
這個操作是一個意圖廣播,會發送到你註冊的
操作 Intent 會隨 Extra 傳送兩個額外值,一個 Network 是 type called 的 #EXTRA_NETWORK 額外值,另一個 NetworkRequest 是 typeed extra #EXTRA_NETWORK_REQUEST ,包含原始請求參數。 在完成意圖處理前,建立新的 NetworkCallback 基於網路的請求非常重要,否則意圖處理後不久就會被釋放。
如果已經註冊了這個意圖的請求(且定義為 Intent#filterEquals兩個意圖的相等),則該請求將被移除並以此意圖取代,實際上釋放了先前 NetworkRequest的 。
請求通常可透過撥打 #releaseNetworkRequest(android.app.PendingIntent)來解除。
目前尚不支援請求擁有上述或 NetworkCapabilities#NET_CAPABILITY_VALIDATEDNetworkCapabilities#NET_CAPABILITY_CAPTIVE_PORTALNetworkCapabilities 的網路,表示某個網路可能永遠無法達成,且在啟動網路前未知該網路是否能達到這些狀態,因此框架不知道如何滿足具備這些能力的請求。
為避免應用程式回調洩漏導致效能問題,系統會限制每個應用程式的未解決請求數為 100 筆(以 UID 識別),且此方法 #registerNetworkCallback 的所有變體共享,且 也包含 ConnectivityDiagnosticsManager#registerConnectivityDiagnosticsCallback。 使用此方法請求網路將計入此限制。 若超過此限制,將會拋出例外。 為避免此問題並節省資源,請務必將回撥註為 或 取消註冊。#unregisterNetworkCallback(PendingIntent)#releaseNetworkRequest(PendingIntent)
此方法要求呼叫者持有 android.Manifest.permission#CHANGE_NETWORK_STATE 權限或修改系統設定的能力,由 決定 android.provider.Settings.System#canWrite。
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestNetwork(NetworkRequest, ConnectivityManager+NetworkCallback)
請求一個網路滿足一組 NetworkCapabilities。
[Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_net_ConnectivityManager_NetworkCallback_Handler")]
public virtual void RequestNetwork(Android.Net.NetworkRequest request, Android.Net.ConnectivityManager.NetworkCallback networkCallback);
[<Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_net_ConnectivityManager_NetworkCallback_Handler")>]
abstract member RequestNetwork : Android.Net.NetworkRequest * Android.Net.ConnectivityManager.NetworkCallback -> unit
override this.RequestNetwork : Android.Net.NetworkRequest * Android.Net.ConnectivityManager.NetworkCallback -> unit
參數
- request
- NetworkRequest
NetworkRequest 描述這個請求。
- networkCallback
- ConnectivityManager.NetworkCallback
這個請求將被使用。ConnectivityManager.NetworkCallback 請注意,回撥不能被分享——它們會唯一指定這個請求。
- 屬性
例外狀況
若 request 指定任意可變 NetworkCapabilities。
備註
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。
適用於
RequestNetwork(NetworkRequest, ConnectivityManager+NetworkCallback, Handler)
[Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_net_ConnectivityManager_NetworkCallback_Landroid_os_Handler_Handler", ApiSince=26)]
public virtual void RequestNetwork(Android.Net.NetworkRequest request, Android.Net.ConnectivityManager.NetworkCallback networkCallback, Android.OS.Handler handler);
[<Android.Runtime.Register("requestNetwork", "(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V", "GetRequestNetwork_Landroid_net_NetworkRequest_Landroid_net_ConnectivityManager_NetworkCallback_Landroid_os_Handler_Handler", ApiSince=26)>]
abstract member RequestNetwork : Android.Net.NetworkRequest * Android.Net.ConnectivityManager.NetworkCallback * Android.OS.Handler -> unit
override this.RequestNetwork : Android.Net.NetworkRequest * Android.Net.ConnectivityManager.NetworkCallback * Android.OS.Handler -> unit
參數
- request
- NetworkRequest
- networkCallback
- ConnectivityManager.NetworkCallback
- handler
- Handler
- 屬性
備註
本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。