我有一个实现的RuntimePermission
查询Location
。当我尝试这样做时requestLocationUpdates
,我LintError
建议我添加PermissionCheck
该行。考虑到我实现了运行时权限。所以看起来是这样的
if (isNetworkEnabled() && networkListener != null) {
if (ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity, new String[]
{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
} else
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkListener);
}
我的主类实现了onRequestPermissionsResult
回调。这看起来像,
switch (requestCode) {
case REQUEST_LOCATION:
if (grantResults.length == 2 && grantResults[0] == PackageManager.PERMISSION_GRANTED
&& grantResults[1] == PackageManager.PERMISSION_GRANTED) {
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, networkListener);
} else
Message.displayToast(context, "Without enabling permission, you can't access this feature");
break;
}
授予权限后,我再次请求位置更新。但它再次显示LintError
添加PermissionCheck
. 参考下图
只是为了checkSelfPermission
在请求requestLocationUpdate
内部之前尝试一下onRequestPermissionsResult
,错误就消失了。就像下面的代码。
if (ActivityCompat.checkSelfPermission(context, permissions[0]) == PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(context, permissions[1]) == PackageManager.PERMISSION_GRANTED)
所以,我的问题是,如果用户授予权限,我是否需要再次检查权限?如我错了请纠正我!