Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何检查Android和iOS上的网络是否可用(Delphi XE5)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
>如何检查 Android和iOS上的网络是否可用?

解决方法

试试这个:
unit Network;

interface

function IsConnected: Boolean;

function IsWiFiConnected: Boolean;

function IsMobileConnected: Boolean;

implementation

uses
  System.SysUtils,Androidapi.JNIBridge,Androidapi.JNI.GraphicsContentViewText,Androidapi.JNI.JavaTypes,FMX.Helpers.Android,Androidapi.Helpers,Misc;

type
  JConnectivitymanager = interface;
  JNetworkInfo = interface;

  JNetworkInfoClass = interface(JObjectClass)
  ['{E92E86E8-0BDE-4D5F-B44E-3148BD63A14C}']
  end;

  [JavaSignature('android/net/NetworkInfo')]
  JNetworkInfo = interface(JObject)
  ['{6DF61A40-8D17-4E51-8EF2-32CDC81AC372}']
    {Methods}
    function isAvailable: Boolean; cdecl;
    function isConnected: Boolean; cdecl;
    function isConnectedOrConnecTing: Boolean; cdecl;
  end;
  TJNetworkInfo = class(TJavaGenericImport<JNetworkInfoClass,JNetworkInfo>) end;

  JConnectivitymanagerClass = interface(JObjectClass)
  ['{E03A261F-59A4-4236-8CDF-0068FC6C5FA1}']
    {Property methods}
    function _GetTYPE_WIFI: Integer; cdecl;
    function _GetTYPE_WIMAX: Integer; cdecl;
    function _GetTYPE_MOBILE: Integer; cdecl;
    {Properties}
    property TYPE_WIFI: Integer read _GetTYPE_WIFI;
    property TYPE_WIMAX: Integer read _GetTYPE_WIMAX;
    property TYPE_MOBILE: Integer read _GetTYPE_MOBILE;
  end;

  [JavaSignature('android/net/Connectivitymanager')]
  JConnectivitymanager = interface(JObject)
  ['{1C4C1873-65AE-4722-8EEF-36BBF423C9C5}']
    {Methods}
    function getActiveNetworkInfo: JNetworkInfo; cdecl;
    function getNetworkInfo(networkType: Integer): JNetworkInfo; cdecl;
  end;
  TJConnectivitymanager = class(TJavaGenericImport<JConnectivitymanagerClass,JConnectivitymanager>) end;

function GetConnectivitymanager: JConnectivitymanager;
var
  ConnectivityserviceNative: JObject;
begin
  ConnectivityserviceNative := SharedActivityContext.getSystemservice(TJContext.JavaClass.CONNECTIVITY_serviCE);
  if not Assigned(ConnectivityserviceNativE) then
    raise Exception.Create('Could not locate Connectivity service');
  Result := TJConnectivitymanager.Wrap(
    (ConnectivityserviceNative as ILocalObject).GetObjectID);
  if not Assigned(Result) then
    raise Exception.Create('Could not access Connectivity Manager');
end;

function IsConnected: Boolean;
var
  Connectivitymanager: JConnectivitymanager;
  ActiveNetwork: JNetworkInfo;
begin
  Connectivitymanager := GetConnectivitymanager;
  ActiveNetwork := Connectivitymanager.getActiveNetworkInfo;
  Result := Assigned(ActiveNetwork) and ActiveNetwork.isConnected;
end;

function IsWiFiConnected: Boolean;
var
  Connectivitymanager: JConnectivitymanager;
  WiFiNetwork: JNetworkInfo;
begin
  Connectivitymanager := GetConnectivitymanager;
  WiFiNetwork := Connectivitymanager.getNetworkInfo(TJConnectivitymanager.JavaClass.TYPE_WIFI);
  Result := WiFiNetwork.isConnected;
end;

function IsMobileConnected: Boolean;
var
  Connectivitymanager: JConnectivitymanager;
  MobileNetwork: JNetworkInfo;
begin
  Connectivitymanager := GetConnectivitymanager;
  MobileNetwork := Connectivitymanager.getNetworkInfo(TJConnectivitymanager.JavaClass.TYPE_MOBILE);
  Result := MobileNetwork.isConnected;
end;

end.

大佬总结

以上是大佬教程为你收集整理的如何检查Android和iOS上的网络是否可用(Delphi XE5)全部内容,希望文章能够帮你解决如何检查Android和iOS上的网络是否可用(Delphi XE5)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。