我已经在android版本6.0中请求了权限-棉花糖,但当使用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;
}
在请求权限后,那么在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;
}
}
这是android M的bug吗?
发布于 2016-04-18 03:45:19
在Nexus5上,随着M的更新,我似乎也需要打开GPS定位来让它工作。
发布于 2016-01-21 10:15:22
可能是android M的运行时权限管理导致的,你可以设置targetSdkVersion 19(小于21或23)重试。对我来说很管用
发布于 2018-08-01 09:13:29
在运行时需要权限时会请求该权限。请注意,它不是:
Settings -> Location
它正在检查:
Settings -> Applications -> (YOUR APP) -> Permissions
这就是必须设置更细粒度的运行时权限的地方。从版本6开始,必须为每个应用程序设置它。
https://stackoverflow.com/questions/34288416
复制相似问题