unit Androidapi.JNI.Network;interfacefunction IsConnected: Boolean;function IsWiFiConnected: Boolean;function IsMobileConnected: Boolean;implementationuses  System.SysUtils,  Androidapi.JNIBridge,  Androidapi.JNI.GraphicsContentViewText,  Androidapi.JNI.JavaTypes,  FMX.Helpers.Android;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.//  记得要在project的option里的permission里面给权限if  IsConnected  then ShowMessage('IsConnected'); if IsWiFiConnected then ShowMessage('IsWiFiConnected'); if IsMobileConnected then  ShowMessage('IsMobileConnected');

更多相关文章

  1. Android(安卓)关于显示键盘,布局错乱网上顶的问题
  2. MySQL: 基于 Android(安卓)远程连接
  3. android 记得用mkdirs不要用mkdir
  4. Android之Loader理解
  5. Android(安卓)root权限判断
  6. gradle clean报错Could not find manifest-merger.jar
  7. Android(安卓)上实现微信微博上的应用语言切换
  8. Android(安卓)sdcard 权限问题
  9. Android(安卓)实现开机自启动 Service

随机推荐

  1. Java:下一个 COBOL?
  2. 软件架构被高估,清晰简单的设计被低估
  3. 2021年,开发者的落日
  4. 与高清卡顿说拜拜 一招根治视频云顽疾
  5. 什么是Zero-Copy?
  6. NO纯社交媒体!Facebook如何利用AI实现产品
  7. 消息中间件选型分析
  8. 只需要这5招,就能判断你是在和人还是Googl
  9. 我看好数据湖的未来,但不看好数据湖的现在
  10. 20201204 面向对象介绍