【发布时间】:2016-08-15 10:32:22
【问题描述】:
我正在使用运行时权限请求,但存在问题。似乎是无限调用了回调方法onRequestPermissionsResult。所以当用户拒绝请求时,应用程序没有响应..
每次用户单击“拒绝”时,权限对话框都会重新出现。只有单击“不再询问”,它才不会再次出现。 * 按“允许”时效果很好 - 没有任何问题。
有什么方法可以取消一次调用的方法吗?
if (ActivityCompat.checkSelfPermission( this, Manifest.permission.ACCESS_FINE_LOCATION ) != PackageManager.PERMISSION_GRANTED )
{
ActivityCompat.requestPermissions( this, new String[]{ Manifest.permission.ACCESS_FINE_LOCATION }, LOCATION_PERMISSION_CUSTOM_REQUEST_CODE );
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch( requestCode )
{
case LOCATION_PERMISSION_CUSTOM_REQUEST_CODE:
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted
MyManager.connect();
return;
} else {
// permission denied
return;
}
default:
return;
}
}
【问题讨论】:
-
请发布您的代码
-
@GilMoshayof 编辑了帖子)谢谢
-
MyManager.connect() 中发生了什么?
-
@GilMoshayof 只是
mGoogleApiClient.connect();。另外,值得一提的是,如果单击“允许”,则不会出现问题。但是当用户按下“拒绝”时,它会无限调用onRequestPermissionsResult -
是的,当然 - 当另一个活动完成并返回到当前活动时,会调用 onResume。请求权限对话框充当一个活动,因此当它停止工作时,您当前的活动将恢复,因此循环重复:)
标签: android permissions runtime