sha*_*ine 5 android android-6.0-marshmallow
我已经在Android版本6.0中请求了许可 - Marshmallow,但是当使用getScanResults()时它仍然返回空列表.
private boolean checkPermission() {
List<String> permissionsList = new ArrayList<String>();
if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
permissionsList.add(Manifest.permission.ACCESS_COARSE_LOCATION);
}
if (permissionsList.size() > 0) {
ActivityCompat.requestPermissions((Activity) mContext, permissionsList.toArray(new String[permissionsList.size()]),
REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS);
return false;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
在请求权限之后,然后在onRequestPermissionsResult方法中,我获得了ACCESS_FINE_LOCATION和ACCESS_COARSE_LOCATION的权限,但我仍然无法扫描结果
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions,
int[] grantResults) {
switch (requestCode) {
case REQUEST_CODE_ASK_MULTIPLE_PERMISSIONS:
if (permissions.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED ||
(permissions.length == 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED &&
grantResults[1] == PackageManager.PERMISSION_GRANTED)){
List<ScanResult> scanResults = mWifi.getScanResults();
//list is still empty
}
else {
// Permission Denied
Toast.makeText(mContext, getString(R.string.permission_deny), Toast.LENGTH_LONG).show();
}
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这是android M的错误吗?
您仍需要在请求权限后启用WIFI.简而言之,您必须按顺序执行此操作以扫描周边:
注意:在某些手机上(Moto X 2014),我注意到你需要启用基本位置才能获得任何结果,只有用户(系统用户界面)似乎能够触发开/关.如果用户的位置完全关闭,即使系统UI可以,我似乎也无法获得非空结果列表.这可能是由于Marshmallow需要在用户应用程序中具有蓝牙和WiFi扫描的位置,以及摩托罗拉的不良实施,或者已经在最新的Marshmallow错误跟踪器中修复的缺陷,但摩托罗拉最新的OTA中没有,因为这不会发生在Nexus 5或Galaxy S6.
| 归档时间: |
|
| 查看次数: |
6992 次 |
| 最近记录: |