每次拒绝位置权限后都会重新加载片段

时间:2019-08-16 13:53:35

标签: android kotlin permissions gps

我正在请求访问Fragment中GPS位置的权限,但是当我拒绝权限时-每次都会重新加载片段。当我接受许可就可以了,片段不会重新加载。

它以前工作得很好,但是开始表现得像这样。我已经在不同的设备上对其进行了测试:结果相同。可能是什么问题?

清单中

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    override fun checkAndAskPermissions() {
        val permission = Manifest.permission.ACCESS_FINE_LOCATION
        if (ContextCompat.checkSelfPermission(context!!, permission) != PackageManager.PERMISSION_GRANTED) {
            requestPermissions(arrayOf(permission), LOCATION_REQUEST_CODE)
        } else {
            presenter.onPermissionsReceived()
        }
    }


    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
        when (requestCode) {
            LOCATION_REQUEST_CODE -> {
                if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
                    presenter.onPermissionsReceived()
                } else {
                    presenter.onPermissionsDenied()
                }              
            }
        }
    }

2 个答案:

答案 0 :(得分:0)

问题不在onRequestPermissionsResult方法中。问题在于该片段所附加的onResume活动方法。每次在onResume活动方法上询问权限时。

答案 1 :(得分:-1)

使布尔条件不能被多次触发

override fun checkAndAskPermissions() {
    if(bool) {
       bool = false
       ....
    }
}