android manager wifi 怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android manager wifi 怎么用相关的知识,希望对你有一定的参考价值。

  获取Wifi的控制类WifiManager。
  WifiManager wm=(WifiManager)getSystemService(Context.WIFI_SERVICE);
  接下来可以对wifi操作了,比如要打开、关闭wifi,可以通过WifiManager的setWifiEnabled()方法来开关wifi。
  若要查看一些信息,可以通过getConnectionInfo()方法得到WifiInfo类的对象,WifiInfo类里主要提供手机wifi上面存储的连接信息。
  WifiInfo类方法:
  1、getBSSID() 获取接入点的mac地址(String)
  2、getIpAddress() 获取本机的IP地址 (int)
  3、getLinkSpeed() 获取连接速度(不是下载速度),单位为Mbps (int)
  4、getMacAddress() 获取mac地址 (String)
  5、getNetworkId() 获取网络id号。每一个设定好了的网络都有一个独一无二的整数型ID号,用来识别网络,当操作请求时(翻译)。简而言之,就是这个号就是代表一个连接点,手机可以通过wifi连接很多无线网的。
  6、getRssi() 返回收到的信号强度,是个负数。(好像到-113就表示一点信号都没有,也就是说数越大信号就越好)
  7、getSSID() 获取无线信号提供者的名称 (就是要连的网络的名字)(String)
  上面那个类只能查到本机的mac地址与ip,要只查看本机的详细信息,可以通过这个类:DhcpInfo df=wm.getDhcpInfo();
  DhcpInfo类没什么方法,提供了一些字段:
  1、dns1 第一个DNS
  2、dns2 如上
  3、gateway 网关
  4、ipAddress IP地址
  5、netmask 子网掩码
  6、serverAddress 服务端地址(其实就是路由器ip,和网关一样)
  7、leaseDuration 和上面的getLinkSpeed() 方法的值接近,可能是连接速度,不过单位不是Mbps,getLinkSpeed() 得到72,这个字段的值是7200

  上面的IP与网关、子网掩码等都是int型数值,直接看看不懂,附上一个我写的方法把int转成String类型。

  private String intToString(int a)
  StringBuffer sb=new StringBuffer();
  int b=(a>>0)&0xff;
  sb.append(b+".");
  b=(a>>8)&0xff;
  sb.append(b+".");
  b=(a>>16)&0xff;
  sb.append(b+".");
  b=(a>>24)&0xff;
  sb.append(b);
  return sb.toString();
  

  WifiConfiguration 类主要提供一个wifi配置的所有信息
  有如下字段(自己明白的不一定正确):
  BSSID 接入点的mac地址。
  SSID 接入点的名字。
  networkId 网络号
  preSharedKey WPA-PSK密码,如果有就会得到一个*(这玩意就是判断是不是有密码的)
  priority 优先级
  status 连接状态,值是WifiConfiguration.Status中字段的一种。

  WifiConfiguration.Status 提供了3个字段表示wifi连接的三种状态
  1.CURRENT 值为0,表示处于连接状态
  2.DISABLED 值为1,表示网络不可用
  3. ENABLED 值为2,表示网络可用但没连接

  ScanResult wifi扫描到的接入点信息
  1.BSSID
  2.SSID
  3.capabilities
  4.frequency
  5.level

  关于接收WIFI状态改变接收广播信息:

  ACTION: WifiManager.WIFI_STATE_CHANGED_ACTION ( "android.net.wifi.WIFI_STATE_CHANGED")wifi状态变化触发,触发两次。

  可接收两个信息:(键) (这个是监听wifi状态变化的,wifi状态变化并不包括wifi的连接状态,只是单纯的指示wifi的5种状态)

  1. WifiManager.EXTRA_PREVIOUS_WIFI_STATE("previous_wifi_state") int型值 intent.getIntExtra("键",0);(第二个为得不到时的默认值)

  2. WifiManager.EXTRA_WIFI_STATE("wifi_state") int型值 intent.getIntExtra("键",0);(第二个为得不到时的默认值)

  ACTION: WifiManager.NETWORK_STATE_CHANGED_ACTION("android.net.wifi.STATE_CHANGE")wifi连接网络的状态广播,连接过程中接收多次,在连接过程中可与获取NetworkInfo对象,通过ni.getState()可以获取wifi连接状态。如果连接state处于connected状态,可以通过WifiManager.EXTRA_WIFI_INFO得到wifiInfo对象。(不重要细节:测试时发现 下面isconnected()方法为true时,这个广播还处于connecting状态,再一次广播才变成connected)

  可接收两个信息:(键)

  1. WifiManager.EXTRA_BSSID("bssid") String类型值 intent.getStringExtra("键")

  2. WifiManager.EXTRA_NETWORK_INFO("networkInfo") T getParcelableExtra(“键”)

  ACTION: WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION( "android.net.wifi.supplicant.CONNECTION_CHANGE") 判断是否WIFI打开了,变化触发一次

  可接收一个信息:(键)(这个应该是广播wifi启动状态的,true表示连接到wifi设备,一般在wifi state处于enable时得到,false则表示断开设备连接,wifi此时状态为disabling。这只是指机器内的wifi连接状态变化,与网络无关)

  1. WifiManager.EXTRA_SUPPLICANT_CONNECTED("connected") boolean类型返回值 intent.getBooleanExtra(“键”, true)第二个是默认值

  ACTION: WifiManager.SUPPLICANT_STATE_CHANGED_ACTION("android.net.wifi.supplicant.STATE_CHANGE")发送WIFI连接的过程信息,如果出错ERROR信息才会收到。连接WIFI时触发,触发多次。

  可接收两个信息:(键)

  1. WifiManager.EXTRA_NEW_STATE("newState") intent.getParcelableExtra("键")

  2. WifiManager.EXTRA_SUPPLICANT_ERROR("supplicantError") int型值 getIntExtra(“键”, int)

  WIFI状态int值对应的状态:

  WifiManager.WIFI_STATE_DISABLED ==1

  WifiManager.WIFI_STATE_DISABLING ==0

  WifiManager. WIFI_STATE_ENABLED==3

  WifiManager. WIFI_STATE_ENABLING==2

  WifiManager. WIFI_STATE_UNKNOWN==4

  上面的是在有wifi的环境下测的,没在没WIFI的环境下测,不一定准,但差不多了。测试机型HTC G17。

  如果在连接WIFI的过程中(Connecting),去连接网络地址(比如http://www.baidu.com)会得到找不到地址的异常,并且在8秒左右之内(就测了一台定制机),不能连接这一地址,否则报找不到地址异常。

  这个包并不判断网络连接状态,只是判断wifi的各种状态,如果需要判断网络状态, 在android.net包中。ConnectivityManager 。

  //判断WIFI是否连接
  private boolean isConnected(Context context)
  ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo ni = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
  System.out.println(ni.getState());
  System.out.println(ni.getDetailedState()+"-----");
  if(ni != null && ni.getState()==State.CONNECTED)
  return true;
  return false;
  

  private boolean isWifiConected(Context context)
  WifiManager wm = (WifiManager) context
  .getSystemService(Context.WIFI_SERVICE);
  List<WifiConfiguration> list = wm.getConfiguredNetworks();
  Iterator<WifiConfiguration> it = list.iterator();
  while (it.hasNext())
  WifiConfiguration wc = it.next();
  if (wc.status == WifiConfiguration.Status.CURRENT)
  return true;
  
  return false;
  //2012.11.12在4.0机器上发现这个方法一直返回false,估计我理解错了,不要用。

  WifiInfo不为空并不代表这个类里面就存了信息,getMacAdress可能为空。

  public String getMac()
  WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
  WifiInfo wi = wm.getConnectionInfo();
  if(wi == null)
  return null;
  return wi.getMacAddress();
  
参考技术A  Android Manager WiFi是一个免费的WIFI无线管理工具。可以让使用者通过无线连线来与电脑作同步,它主要拥有以下功能:
  *联系人:编辑与备份联系人。
  *消息:从电脑上发送短信,并备份短信于电脑中。
  *图片:导入并整理照片成为相册,并且可以编辑后上传至手机作为壁纸。
  *影片:管理并上传影片至手机。
  *音乐:类似iTunes中的界面,可以管理手机的音乐以及播放列表。
  *应用:安装APK文件,并且备份与管理手机上的应用软件。
  *文件:从电脑上管理手机中的文件。
  *同步:与联系人/与Outlook,Outlook Express和Windows联系人进行联络人与行程同步日历(新浪)
  同步版本支持:Outlook 2003及以上
  界面语言:英、简中、简繁、德、法、意、西、俄
新浪提示:需要配合手机版使用,下载手机版!
使用方法:
1:手机上安装 Android Manager Agent
在您的手机上,请进入:设置 > 应用程序,并开启 未知来源。
2:在手机安装程序(类似91助手)请在下面下载附件。
程序安装完成后,打开 Android Manager Agent。 在欢迎页面上,点选下一步继续。
进入 Android Manager 设置 页面,完成 WiFi 联机所需的各项设定:
验证码: 设定一个与计算机联机所需的验证码。此代码必须在计算机与手机上皆输入方可建立联机。
闲置等待时间:设定一个 WiFi 联机关闭以节省能源之前所需的 闲置等待时间
3:开始建立与手机的联机
在 Android Manager 中,请至:设置 > 连接,输入之前于手机中设定好的验证码以及已联机的 WiFi IP 地址。
4:手机上确认联机是否成功
在您的手机画面上,确认计算机与手机的联机是否成功。
如果 WiFi Sync 不巧关闭了,点一下以再次开始建立联机。
如此,计算机与手机间的联机将可于几秒 钟之内再度建立。
注意: Android Manager Agent 将自动于程序一会儿后自动关闭 WiFi 连线,如此可节省电力。欲重新开启 WiFi 联机,请返回手机画面上,按选 WiFi ON 即可再度开启。

Android Management API - 设置问题

【中文标题】Android Management API - 设置问题【英文标题】:Android Management API - Setting issue 【发布时间】:2021-05-19 13:42:57 【问题描述】:

我正在开发 Google 的 Android Managament API。我需要禁用对“Wifi 菜单”以外的所有可能的菜单设置的访问。我正在使用自助服务终端应用程序。

现在,我从策略中禁用了访问权限,但我仍然可以在打开 wifi 菜单时单击左上角的后退箭头按钮来访问和导航菜单系统。

image url

这是谷歌的错误吗?

我的政策是:

"kioskCustomization": 
    "statusBar": "NOTIFICATIONS_AND_SYSTEM_INFO_ENABLED",
    "deviceSettings": "SETTINGS_ACCESS_BLOCKED",
    "systemNavigation": "HOME_BUTTON_ONLY",
    "powerButtonActions": "POWER_BUTTON_BLOCKED"
,

【问题讨论】:

【参考方案1】:

我认为 AMAPI 中没有只能访问 WIFI 菜单的功能。关于deviceSettings:”SETTINGS_ACCESS_BLOCKED”,它将阻止所有设置菜单,您应该无法在菜单系统中导航。我尝试在 Instagram、Youtube 和私人应用等公共应用上使用此功能,但无法使用后退箭头按钮访问菜单设置。

在我制作的另一个场景中,我创建了一个私有应用程序来使用像 WifiManager.ACTION_PICK_WIFI_NETWORK 这样的设置意图访问 WIFI 菜单,并且我能够访问菜单系统。

我们发现了一个错误,目前正在由我们的工程团队调查,并且即将发布修复程序。

我建议加入 Android Management API 邮件列表,让您随时了解最新更新。

【讨论】:

以上是关于android manager wifi 怎么用的主要内容,如果未能解决你的问题,请参考以下文章

serial manager怎么用

Android sdk manager 无法打开怎么解决

Android Management API - 设置问题

无法链接有wpa2的wifi 用wicd输入密码之后提示密码错误 你是怎么解决的??

Android sdk manager 显示 “Done loading packages”,该怎么办?

android log 怎样看wifi密码