栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

Xamarin.Android 1. 即时网络监听-ConnectivityManager.NetworkCallback

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Xamarin.Android 1. 即时网络监听-ConnectivityManager.NetworkCallback

1. 编译版本


2. 新建NetworkCallbackImpl类继承ConnectivityManager.NetworkCallback,并重写OnAvailable、OnLost、OnCapabilitiesChanged三个方法
//NetUtils.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.App.Usage;
using Android.Net;
using Android.Net.Wifi;

namespace Xxxx
{
    public class NetworkCallbackImpl: ConnectivityManager.NetworkCallback
    {
        public override void OnAvailable(Network network)
        {
            base.OnAvailable(network);
            Console.WriteLine("OnAvailable: 网络已连接");
        }

        public override void OnLost(Network network)
        {
            base.OnLost(network);
            Console.WriteLine("OnLost: 网络已断开");
        }

        public override void OnCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities)
        {
            base.OnCapabilitiesChanged(network, networkCapabilities);
            if (networkCapabilities.HasCapability(NetCapability.Validated))
            {
                if (networkCapabilities.HasTransport(TransportType.Wifi))
                {
                    Console.WriteLine("OnCapabilitiesChanged: 网络类型为wifi");
                }
                else if (networkCapabilities.HasTransport(TransportType.Cellular))
                {
                    Console.WriteLine("OnCapabilitiesChanged: 蜂窝网络");
                }
                else
                {
                    Console.WriteLine("OnCapabilitiesChanged: 其他网络");
                }
            }
        }
	}
}
3. 注册NetworkCallbackImpl
//MainActivity.cs
using Android.App;
using Android.Widget;
using Android.OS;
using System.Collections.Generic;
using Android.Content;
using Phoneword;
using Android.Net.Wifi;
using Android.Net;

namespace Xxxx
{
    [Activity(Label = "Phone Word", MainLauncher = true)]
    public class MainActivity : Activity
    {
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            List phoneNumbers = new List();
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            //注册NetworkCallbackImpl
            NetworkCallbackImpl networkCallback = new NetworkCallbackImpl();
            NetworkRequest.Builder builder = new NetworkRequest.Builder();
            NetworkRequest request = builder.Build();
            ConnectivityManager connMgr = (ConnectivityManager)Application.Context.GetSystemService(Context.ConnectivityService);
            if (connMgr != null)
            {
                connMgr.RegisterNetworkCallback(request, networkCallback);
            }
		}
	}
}
4. 实测结果,测试手机使用Android10

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/904438.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号