F_hawk189
F_hawk189
  • 发布:2019-04-10 10:51
  • 更新:2019-04-17 15:42
  • 阅读:1398

【报Bug】新版本hbuilder不支持安卓WIFI的扫描

分类:HBuilderX

详细问题描述

代码:
//--------------------------------------------------------------------------------------------------
var MainActivity = plus.android.runtimeMainActivity();
// 上下文
var Context = plus.android.importClass('android.content.Context');
// 导入WIFI管理 和 WIFI 信息 的class
plus.android.importClass("android.net.wifi.WifiManager");
plus.android.importClass("android.net.wifi.WifiInfo");
plus.android.importClass("android.net.wifi.ScanResult");
plus.android.importClass("java.util.ArrayList");
// 获取 WIFI 管理实例
var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);//打开wifi,false为关闭
wifiManager.startScan();//开始扫描
var resultList = wifiManager.getScanResults();
console.log(resultList);
var len = resultList.size();
console.log(len)

    for(var i = 0; i < len; i++) {  
         console.log(resultList.get(i).plusGetAttribute('SSID')+' '+  
         resultList.get(i).plusGetAttribute('BSSID')+' 信号强度'+  
         resultList.get(i).plusGetAttribute('level'));   
         console.log(this.BSSID);  

         if(resultList.get(i).plusGetAttribute('BSSID')==this.BSSID){  
            uni.hideLoading();  
            var that=this;  
            uni.chooseImage({   
                count: 1,   
                sizeType: ['compressed'], //原图  
                sourceType: ['camera'], //拍照  
                success: function (rem) {  
                that.cls_img_file=rem.tempFilePaths;  
                that.clsSend();  
              }  
            });   
             break;   
        }  
    }  

//-----------------------------------------------------------------------------------------------------
在hbuilder17.0版本中,这段代码没有任何问题,当使用最新版本hbuilder即18.2时,会获取不到WIFI列表,不清楚是版本BUG还是说需要对权限进行特殊设置

重现步骤

1、使用17.0hbuilder执行上述代码,获取到了手机当前范围内的WIFI列表
2、使用18.2hbuilder执行上述代码,获取WIFI列表为空

IDE运行环境说明

hbuildereX 17.0与hbuilder18.2

uni-app运行环境说明

[运行端是h5或app或某个小程序]
[运行端版本号]

App运行环境说明

[Android版本号] 7以上,5以下没问题

[手机型号] 华为、魅族、vivo均不可以

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
[App安装包或H5地址]
[可重现代码片段]

联系方式

[QQ]751784947

2019-04-10 10:51 负责人:无 分享
已邀请:
DCloud_App_Array

DCloud_App_Array

此问题应该应用没有申请到权限导致的(新版本Android系统需要主动申请权限),可以尝试降低targetSdkVersion。
uni-app项目,在manifest.json的"app-plus"->"distribute"->"android"添加targetSdkVersion字段
5+ APP项目,在manifest.json的"plus"->"distribute"->"google"添加targetSdkVersion字段

"targetSdkVersion": 21,

配置后需要提交云端打包后才能生效。

  • F_hawk189 (作者)

    谢谢你,我尝试一下看是否可以

    2019-04-11 23:29

  • F_hawk189 (作者)

    降低targetSdkVersion为21之后真机调试还是不可以的,需要添加别的什么权限么

    2019-04-15 15:31

  • F_hawk189 (作者)

    我把所有的权限都打开了,sdkversion也加上了还是不行

    2019-04-15 16:16

  • DCloud_App_Array

    回复 F_hawk189:配置targetSdkVersion需要重新提交云端打包,使用默认基座真机运行不会生效。

    2019-04-15 21:17

  • F_hawk189 (作者)

    回复 DCloud_App_Array:UNI5F5C11E,云端打包,仍没法运行,获取失败

    2019-04-16 10:35

Android_TRY

Android_TRY

你好,"targetSdkVersion"<23时,需要配置android.permission.CHANGE_WIFI_STATE和android.permission.ACCESS_WIFI_STATE两个权限;"targetSdkVersion">=23时,除需要配置android.permission.CHANGE_WIFI_STATE和android.permission.ACCESS_WIFI_STATE两个权限外,还需要配置并申请android.permission.ACCESS_FINE_LOCATION这个动态权限;目前动态权限相关功能正在开发,所以建议尝试用前一种方案解决问题。(如果云打包仍然有问题,可以以附件的形式将打包好的apk发给我进一步查找原因)

该问题目前已经被锁定, 无法添加新回复