Last active
April 11, 2023 09:18
-
-
Save stevdza-san/5f68c250121d59b7a7286d1ce950731f to your computer and use it in GitHub Desktop.
For my Easy Permissions video tutorial
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.Manifest | |
import android.os.Bundle | |
import android.view.LayoutInflater | |
import android.view.View | |
import android.view.ViewGroup | |
import android.widget.Toast | |
import androidx.fragment.app.Fragment | |
import com.example.testapp.databinding.FragmentFirstBinding | |
import com.vmadalin.easypermissions.EasyPermissions | |
import com.vmadalin.easypermissions.dialogs.SettingsDialog | |
class FirstFragment : Fragment(), EasyPermissions.PermissionCallbacks { | |
companion object { | |
const val PERMISSION_LOCATION_REQUEST_CODE = 1 | |
} | |
private var _binding: FragmentFirstBinding? = null | |
private val binding get() = _binding!! | |
override fun onCreateView( | |
inflater: LayoutInflater, container: ViewGroup?, | |
savedInstanceState: Bundle? | |
): View { | |
// Inflate the layout for this fragment | |
_binding = FragmentFirstBinding.inflate(inflater, container, false) | |
setViewVisibility() | |
binding.button.setOnClickListener { | |
requestLocationPermission() | |
} | |
return binding.root | |
} | |
private fun hasLocationPermission() = | |
EasyPermissions.hasPermissions( | |
requireContext(), | |
Manifest.permission.ACCESS_FINE_LOCATION | |
) | |
private fun requestLocationPermission() { | |
EasyPermissions.requestPermissions( | |
this, | |
"This application cannot work without Location Permission.", | |
PERMISSION_LOCATION_REQUEST_CODE, | |
Manifest.permission.ACCESS_FINE_LOCATION | |
) | |
} | |
override fun onRequestPermissionsResult( | |
requestCode: Int, | |
permissions: Array<out String>, | |
grantResults: IntArray | |
) { | |
super.onRequestPermissionsResult(requestCode, permissions, grantResults) | |
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this) | |
} | |
override fun onPermissionsDenied(requestCode: Int, perms: List<String>) { | |
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms.first())) { | |
SettingsDialog.Builder(requireActivity()).build().show() | |
} else { | |
requestLocationPermission() | |
} | |
} | |
override fun onPermissionsGranted(requestCode: Int, perms: List<String>) { | |
Toast.makeText( | |
requireContext(), | |
"Permission Granted!", | |
Toast.LENGTH_SHORT | |
).show() | |
setViewVisibility() | |
} | |
private fun setViewVisibility() { | |
if (hasLocationPermission()) { | |
binding.textView.visibility = View.VISIBLE | |
binding.button.visibility = View.GONE | |
} else { | |
binding.textView.visibility = View.GONE | |
binding.button.visibility = View.VISIBLE | |
} | |
} | |
override fun onDestroyView() { | |
super.onDestroyView() | |
_binding = null | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You forgot to mention to enable support for view binding. I'm new to Android so it wasn't obvious to me what was goin on when the IDE didn't recognize the FragmentFirstBinding class.
https://dev.to/theimpulson/working-with-view-binding-in-android-using-kotlin-27gn