代码之家  ›  专栏  ›  技术社区  ›  nayan dhabarde

如何在Android中将权限的模板代码从activity/fragment移动到其他类

  •  0
  • nayan dhabarde  · 技术社区  · 5 年前

    我对什么时候可以发送一个上下文作为参数和什么时候不能发送一个参数有很多困惑。

    在我们的大多数应用程序中,我们至少需要一些运行时权限,我希望将这些代码从Activity/fragment类中移出,然后移动到RuntimePermissionManager。

    我不想把它移到BaseActivity或BaseFragment类,因为根据结果请求权限和执行操作应该有一个遵循单一责任原则的类。

     override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
            super.onRequestPermissionsResult(requestCode, permissions, grantResults)
    
            when (requestCode) {
                REQUEST_CODE_LOCATION_PERMISSION -> {
                    if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                        // Perform action
                    } else {
                        // Show description
                    }
                }
            }
        }
    
    
        private fun permissionCheck(permission: Array<String>, requestCode: Int, permissionGranted:() -> Unit) {
            if(ContextCompat.checkSelfPermission(applicationContext,
                                                 permission[0]) == PackageManager.PERMISSION_GRANTED) {
                
                permissionGranted()
            } else {
                
                ActivityCompat.requestPermissions(this,
                                                  permission,
                                                  requestCode)
            }
        }
    
    0 回复  |  直到 5 年前