android wifi列表scanresult为空的问题 5C

6.0之后关闭gps getscanresult方法获取不到wifi列表,但是原生系统设置里的wifi设置却可以获取到,为什么?有没有办法在关闭gps的情况下获取wifi列表,和原生设置里一样

0

3个回答

1
pp692319755
pp692319755 我知道这个,现在需求是关闭gps后获取wifi列表, 有办法吗? 关闭gps后原生设置里是可以看到wifi列表的。
大约一年之前 回复

public WifiManager mWifiManager;
//描述任何Wifi连接状态
private WifiInfo mWifiInfo;
private List mScanResult;

private final int SCAN = 1;
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case SCAN :
Log.e("ConnectActivity","scan -----------");
mWifiManager.startScan();
mScanResult = mWifiManager.getScanResults();
listView.setAdapter(new MyAdapter(ConnectActivity.this,mScanResult));
mWifiInfo = mWifiManager.getConnectionInfo();
textView2.setText("当前网络情况:"+mWifiInfo.getBSSID()+"\n"+mWifiInfo.getMacAddress()+
"\n"+mWifiInfo.getSSID()+"\n"+mWifiInfo.getFrequency()+"\n"+mWifiInfo.getIpAddress());
mHandler.sendEmptyMessageDelayed(SCAN, 2000);
break;
}

    }
};


    查看mWifiManager.getScanResults();这句代码,你会发现

IWifiManager mService;

//其他代码

/**
* Return the results of the latest access point scan.
* @return the list of access points found in the most recent scan. An app must hold
* {@link android.Manifest.permission#ACCESS_COARSE_LOCATION ACCESS_COARSE_LOCATION} or
* {@link android.Manifest.permission#ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION} permission
* in order to get valid results.
*/
public List getScanResults() {
try {
return
mService.getScanResults(mContext.getOpPackageName());
} catch (RemoteException e) {
return null;
}
}

    /**
 * Return the results of the most recent access point scan, in the form of
 * a list of {@link ScanResult} objects.
 * @return the list of results
 */
public List<ScanResult> getScanResults(String callingPackage) {
    enforceAccessPermission();
    int userId = UserHandle.getCallingUserId();
    int uid = Binder.getCallingUid();
    boolean canReadPeerMacAddresses = checkPeersMacAddress();
    boolean isActiveNetworkScorer =
            NetworkScorerAppManager.isCallerActiveScorer(mContext, uid);
    boolean hasInteractUsersFull = checkInteractAcrossUsersFull();
    long ident = Binder.clearCallingIdentity();
    try {
        if (!canReadPeerMacAddresses && !isActiveNetworkScorer
                && !isLocationEnabled(callingPackage)) {
            return new ArrayList<ScanResult>();
        }
        if (!canReadPeerMacAddresses && !isActiveNetworkScorer
                && !checkCallerCanAccessScanResults(callingPackage, uid)) {
            return new ArrayList<ScanResult>();
        }
        if (mAppOps.noteOp(AppOpsManager.OP_WIFI_SCAN, uid, callingPackage)
                != AppOpsManager.MODE_ALLOWED) {
            return new ArrayList<ScanResult>();
        }
        if (!isCurrentProfile(userId) && !hasInteractUsersFull) {
            return new ArrayList<ScanResult>();
        }
        return mWifiStateMachine.syncGetScanResultsList();
    } finally {
        Binder.restoreCallingIdentity(ident);
    }
}


    这里重点查看:

if (!canReadPeerMacAddresses && !isActiveNetworkScorer
&& !isLocationEnabled(callingPackage)) {
return new ArrayList();
}

0
pp692319755
pp692319755 我知道这个,现在需求是关闭gps后获取wifi列表, 有办法吗? 关闭gps后原生设置里是可以看到wifi列表的。
大约一年之前 回复

wifi列表的获取跟GPS开关没有关联啊,wifi获取wifi服务之后扫描就可以获取到wifi列表。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android6.0 扫描WiFi列表的问题
Android 6.0发布近一年之后,我们遇到了第一个Android 6.0的兼容性问题,getScanResults在Android6.0上返回了一个空列表,纳尼,你是在逗我么?去看了下Android 6.0某个分支下的getScanResult源码: public List getScanResults(String callingPackage) { enforceAccessPer
Android6.0(包括)以后获取Wifi 扫描信息列表即getScanResults()为空
原文地址:http://blog.csdn.net/qq_33105369/article/details/78431532 概述: 这篇文章主要解决6.0(包括)的系统,动态申请了ACCESS_COARSE_LOCATION 或者 ACCESS_FINE_LOCATION 权限以后,getScanResults().size()还是为0. 1.首先需
Android 6.0及以上版本,wifiManager.getScanResults()获取数据为空的最直接原因,及解决方法。
在网上所有了此问题,提示一致都是需要加入获取位置的权限(android.permission.ACCESS_FINE_LOCATION),这是6.0系统后加入的梗。 但由于本人有点傻,加了权限后仍旧不行,经过一轮失败后,原来是手机的“位置信息”权限并未打开。 直接解决问题的步骤: 1.加入权限: 2.将软件权限中的读取位置信息的权限打开(或动态添加权限,链接:https://blog.cs...
WIFI的连接与扫描,安卓6.0后getScanResults()的返回的集合为空问题(二、3)
参考:https://blog.csdn.net/free092875/article/details/52788652     一、 相关概念介绍 1 涉及到的类 WifiManager ——入口类,Wifi相关的所有操作均通过此类 WifiConfiguration——进行热点连接时,通过该类为热点创建一个配置,并由WifiManager以此配置生成一个networkId,后开始连...
Android学习笔记三十三:ScanResult(示例,出错代码)
出处:http://www.apihome.cn/api/android/ScanResult.html android.net.wifi 类 ScanResult java.lang.Object android.net.wifi.ScanResult 所有已实现的接口:Parcelable public class ScanResultextends Obj
Android WIFI 列表重复项问题
这两天在看WIFI扫描连接的问题,发现了几个坑: 1、getScanResult 没有结果 2、getConnectionInfo 结果不正确 3、getScanResult 结果有重复项 1、getScanResult 没有结果 这个问题是因为权限不够,要解决这个问题,不仅要WIFI相关的权限,还需要添加: android.Manifest.permission.ACCESS_COA...
Android wifi扫描结果对象ScanResult属性详解
ScanResult public class ScanResult extends Object implements Parcelable java . lang . object ↳ android.net.wifi.ScanResult 描述了检测信息访问点。除了这里描述的属性,乞求者跟踪 quality, noise
Android 获取Scanresult 实例 (隐藏构造方法)
隐藏的构造方法,反射调用 ScanResult sr1 = null; Constructor ctor = ScanResult.class.getDeclaredConstructor(ScanResult.class); ctor.setAccessible(true); ScanResult sr = ctor.newInst
Android 如何判断wifi热点是否需要密码
一、最近开发wifi热点扫描功能,要判断当前连接的wifi热点是否需要密码。在网上搜索之后,发现有如下方法: private static final int WIFI_NEED_PASSWORD = 0; private static final int WIFI_NO_PASSWORD = 1; private static final int WIFI_NOT
Android获取WIFI信号强度
1. 利用Android下的WifiManager获取可见的SSID WifiManager wifiMg = (WifiManager)act.getSystemService(act.WIFI_SERVICE); List list = wifiMg.getScanResults(); 然后对ScanResult里的每个值进行枚举,ScanResult里的是一个level,
Android系统6.0获取WiFi列表为空的问题
最近做的一个功能中涉及到了网络定位,当前采取的方案是利用谷歌提供的Google Maps Geolocation API实现,其中需要我们提供用户当前的基站列表+wifi列表。然后问题就来了,最后发现在6.0的手机上–不开启GPS的时候wifi列表为空。尼玛,吓得我立马打开demo查看代码:public WifiManager mWifiManager; //描述任何Wifi连接状态 private
安卓6.0使用WifiManager.getScanResults()获取的集合为空
使用安卓6.0前的手机测试WIFI去获取信息还是正常的,但使用6.0要动态权限问题就GAME OVER了。 打印的LOG怎么看都为空。但在动态申请权限ACCESS_COARSE_LOCATION(GPS访问设备的位置)后,就解决了。 所以当做一个笔记记来了。
Android 获取本机的mac和wifi的BSSID(mac)以及其他信息
先来说说wifi的属性 在Android的官方文档中定义了如下五种状态: WIFI_STATE_DISABLED   WIFI 不可用  WIFI_STATE_DISABLING  WIFI 正在关闭  WIFI_STATE_ENABLED     WIFI 可用  WIFI_STATE_ENABLING    WIFI 正在打开  WIFI_STATE_UNKNOWN
Android 获取wifi的加密方式
Android 获取当前wifi的加密方式由于有需求是搜索附近的网络,通过账号和密码连接wifi,但是连接的时候需要知道连接的wifi加密方式这篇博客 也是我写的,由于忘记账号和密码了,所以换了账号,重新整理了一下 原文地址: android获取当前隐藏和未隐藏wifi的加密方式(安全性)1.一般WIFI加密有几种方式 WPA-PSK/WPA2-PSK(目前最安全家用加密) WPA/WPA2(
Android6.0及以上版本Wifi开发,扫描Wifi信息,获取Wifi列表为空
最简单的解决办法,把目标版本设置为23以下,其他解决办法待探究。
解决Android6.0以上扫描WIFI获得列表为空
我们知道Android SDK23之后Google对许多权限进行了修改,比如wifi和蓝牙。在Android6.0及以上扫描WIFI必须先打开GPS,否则扫描得到的WIFI列表为空。解决方法如下: 1.首先在AndroidManifest.xml文件中再增加以下权限 uses-permission android:name="android.permission.ACCESS_FINE_L
android 判断当前SSID是否连接
final WifiInfo info = mWifiManager.getConnectionInfo();   获取到当前连接的info 然后拿到要判断的SSID比较
【Android】 查看周围wifi的ssid,并按信号强弱排序
将手机搜到的wifi按强弱顺序列出来,分别显示ssid、bssid、capbilities、level; bssid是mac地址,capbilities是加密类型,level是信号强弱数字(负数,绝对值越小,信号越强)。
Android 自定义wifi扫描以及遇到的坑
先上效果图 实现其实很简单,就是WifiManager的各种调用,下面要说的是一些注意事项和踩到的坑 &amp;lt;uses-permission android:name=&quot;android.permission.ACCESS_NETWORK_STATE&quot; /&amp;gt; &amp;lt;uses-permission android:name=&quot;android.permission.CHANGE_NET...
wifi加密类型
最近开发wifi方面的功能,需要根据wifi加密类型来展现UI。遇到了一个比较蛋疼的问题:如何判断wifi加密类型 wifi的管理需要通过WifiManager来操作 WifiManager mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 开启和关闭wifi mWifiManager.setWi
(Android开发)WiFi扫描列表有多个相同SSID的热点过滤
        在WiFi开发中,使用getScanResults()方法获取扫描到的WiFi列表时,列表中会出现多个SSID相同,BSSID最后4位不相同的热点,而且两个都能连接。参照系统WiFi过滤机制,这里实现的过滤策略,移除列表中SSID相同的热点仅保留信号最强的热点 public List&amp;lt;ScanResult&amp;gt; getScanList() { if (...
Android7.0以上BLE扫描返回空的问题
解决安卓7.0BLE(低功耗蓝牙)扫描返回空的问题 Android7.0后之前的采用BluetoothAdapter的startLeScan方法已经无法获取到ibeacon的信息了。 会报权限安全的错误,要求申请下面的权限之一 &amp;amp;amp;lt;uses-permission android:name=&amp;amp;quot;android.permission.ACCESS_FINE_LOCATION&amp;amp;quot;/&amp;amp;amp;g...
android扫描WiFi列表的正确用法
最近有个需求,需要做一个扫描WiFi列表的功能,也在网上找了一些资料,但有些资料是有问题的,然后自己摸索了下,总结如下。 本地环境: AS版本 3.0.1,DEMO APK 的 Min SDK Version 是 API 23,Target SDK Version 是 API 24,Compile SDK Version是 API 26,真机是Android 7.0 1、打开WiFi,并打开...
(五十四)Android O WiFi 获取扫描结果流程梳理
前言:之前在(五十) Android O WiFi的扫描流程梳理 已经梳理过扫描流程了,那扫描完的结果会呈现在设置的WiFi界面,那扫描结果是如何获取的呢?   1. wifi扫描结果简介 WiFi的扫描结果是WiFi扫描后呈现在设置WiFi界面上的,每个AP是以设置比较特色的组件Preference呈现的,点击即可触发连接操作。同样扫描结果的获取也是Settings+SettingsLib...
android 获取wifi列表
获取WiFi列表方法:创建WifiManager,通过manager对象的getScanResults获取搜索到的结果,直接贴代码。 public List&lt;ScanResult&gt; getWifiList() { WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemSe...
Android获取Wifi列表
1.android中获取wifi列表简单示例 2.根据信号级别显示不同网络图标
Android WiFi 扫描和连接热点
本章主要介绍用户手动的在Settings中点击Scan和Connect按钮,输入密码后的连接过程,先看整体流程图: WiFi Scan过程分析 当用户进入Settings点击Scan后,就会调用到WifiManager的startScan()方法,当然在Settings里面有设置Scan的定时器,每隔一段时间就会去scan,在Wifi Framework中也有scan的定时器。对照上面
Android之WiFi相关类:WiFiConfiguration类的子类和属性
WifiConfiguration.GroupCipher
关于android 不同版本获取wifi SSID,真的没话说了
真的没话说了.......,为何要这样.......,觉得好玩吗.......,谷歌那个写这个获取wifiSSID的接口的工程师闲的蛋疼。         获取wifiSSID的方法如下: android.net.wifi.WifiManager mWifiManager = (WifiManager) MainActivity.this .getSystemService(Co
解决8.0/9.0获取Wifi名字为空 WifiInfo.getSSID为空的情况
最近遇到一个奇怪的bug,部分手机上获取wifi的名字,通过WifiManager.getConnectionInfo().getSSID()为&amp;amp;quot;unknown ssid&amp;amp;quot;,调试查看SSID为&amp;amp;quot;&amp;amp;quot;,这导致接下来的一系列逻辑都出现了问题。目前发现RROS(Remix)的ROM会出现这个问题。特此记录解决方法。 首先实例化WifiManager和ConnectivityManager
获取wifi列表
点击获取wifi列表,如果列表为空,进入系统wifi设置界面
android 获取当前隐藏和未隐藏wifi的加密方式(安全性)
加密WIFI和未加密WIFI的安全性获取方式
Android中实现Wifi列表的更新即wifi的连接与使用
1.Manifest.xm配置WiFi权限 &amp;lt;uses-permission android:name=&quot;android.permission.CHANGE_NETWORK_STATE&quot; /&amp;gt;&amp;lt;uses-permission android:name=&quot;android.permission.CHANGE_WIFI_STATE&quot; /&amp;gt;&amp;lt;uses-permis...
Android 6.0 扫描wifi 列表获取的权限问题
1:Android m中获取wifi列表的方法 public static final List getWifiList(Context context){ WifiManager wifiManager = (WifiManager)context .getSystemService(Context.WIFI_SERVICE);  if (!wifiManager.isWifiEnabl
Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息),androidwifi
Android wifi属性简介 及 wifi信息获取(wifi列表、配置信息、热点信息),androidwifi Android wifi对象属性及简易Demo  本章介绍Android开发中WiFi热点和WiFi属性的获取,介绍WiFi的名称、状态等属性以及获取周围WiFi热点的方法。  一、怎样获取wifi对象并进行操作 要操作 WIFI 设备,需要先获取 Context
android wifi界面根据信号强度排序
        作为一名小白,我没有大牛的技术,没有别人的聪慧,只希望自己孜孜不倦的学习,可以让自己每天都有提高。    今天学习到几个知识点不太理解,把自己查到的资料和例子记录下来,如有大神经过,欢迎指正。    知识点一:工具类Collections中静态方法sort的使用。    Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式:...
android中wifi属性的介绍以及连接到指定的wifi
今天公司的一个项目中的某一个功能正好需要切换wifi热点的连接,所有顺带记录一下 wifi模块简介 android本身已经提供了包来处理Android环境下对Wifi的操作,位置是android.net.wifi下面。调用wifi操作需要在mainfest中添加对应权限。   主要功能类 官方提供的大致可以分为四个主要的类:WifiManager,ScanResult,WifiC
安卓获取wifi ssid的问题
本人就获取wifi相关信息的问题上走了不上弯路,希望通过此文帮助更多新手。 在此问题上,主要有两个问题 一:获取wifi ssid值系统自己加了双引号。 WifiManager mWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = mWifi.getConnectionInfo
android 实时获取wifi信号强度
public boolean isWifiConnect() { ConnectivityManager connManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mWifiInfo = connManager....
Android获取WIFI 的ssid 方法适配Android9.0
Android获取WIFI 的ssid 方法适配 具体使用方式 参见文章:Android9.0https://mp.csdn.net/postedit/84400360
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 wifi微信开发教程 物联网wifi教程