如何检测网络是否(配置为)Android上的移动热点?

 米西米西的歪国人 发布于 2023-01-06 19:02

从Android 4.1开始,您的设备可以检测它是否连接到移动热点(假设移动热点也运行Android 4.1或更高版本).此外,您可以选择将网络标记为移动热点(在"设置/数据使用/溢出"菜单/"移动热点"下).

但是我如何将其视为用户?我是指开发人员?它没有存储在WifiConfiguration中,所以它在哪里?

一些上下文:我想为Android构建一个简单的工具,检查您是否连接到您或Android已标记为移动热点的网络.如果是这样,它将检查是否没有其他(非热点)网络可用.如果是这样,它应该连接到这些其他网络,因为它们应该更快并且没有数据上限.为什么?因为我的手机和平板电脑经常连接到(移动)热点,即使有更好的网络可用.

这是我正在寻找的一些伪代码:

// Check if android has detected mobile hotspot
WifiManager wifiMgr = getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr .getConnectionInfo();
boolean isMobileHotspot = wifiInfo.isMobileHotspot;

更新2014年7月3日

好的,所以Matiash的答案很好,但ConnectivityManager.isActiveNetworkMetered()只会返回当前网络的值.我确实需要它,所以它帮助了我,但它带我到我的工具/应用程序的下一部分:

如果设备连接到移动热点(或Android调用的"计量网络"),我想检查附近的任何接入点是否是更好的选择.所以我需要知道在连接到它之前是否还有任何已知的AP(WifiManager.getConfiguredNetworks())被标记为......

我有一个List和一个List,看起来他们都没有这个信息.

这让我回到最初的问题:有没有办法在数据使用情况下检索移动热点(由Android和/或用户配置)?而这次我的意思是所有人.

更新2014年7月7日

我在AOSP问题跟踪器中发布了一个功能请求,用于访问(只读)NetworkPolicyManager.Plz在此投票:https://code.google.com/p/android/issues/detail? id = 73206&thanks = 73206&ts = 1404719243

1 个回答
  • 您可以通过致电访问此信息ConnectivityManager.isActiveNetworkMetered().

    这将返回活动连接是否为热点(如数据使用 - >移动热点中所定义).

    关于第二部分,我很抱歉,但我不认为这是可能的.该标志不是公共的,即使您android.net.NetworkPolicyManager通过反射获得可用于检索它的对象():

    Object npm = Class.forName("android.net.NetworkPolicyManager").getDeclaredMethod("from", Context.class).invoke(null, this);
    Object policies = npm.getClass().getDeclaredMethod("getNetworkPolicies").invoke(npm);
    

    调用getNetworkPolicies()需要非系统应用程序无法获取的MANAGE_NETWORK_POLICY权限,因为它具有"签名"保护级别.

    我希望被证明不正确.:)也许查看管理此信息的Android活动的源代码(https://github.com/android/platform_packages_apps_settings/blob/master/src/com/android/settings/net/DataUsageMeteredSettings.java),特别是该buildWifiPref()方法,将提供一些线索.

    2023-01-06 19:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有