Task: Upload an image which user can choose from device.
How to open File CHooser window on button press in Android app using Kotlin?
In your activity add the button click to add an intent:
btnBack.setOnClickListener {
val intent = Intent()
.setType("*/*")
.setAction(Intent.ACTION_GET_CONTENT)
startActivityForResult(Intent.createChooser(intent, "Select a file"), 111)
}
Set a custom requestCode, I set 111
Add the onActivityResult
in your activity to catch the result:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == 111 && resultCode == RESULT_OK) {
val selectedFile = data?.data //The uri with the location of the file
}
}
Now selectedFile
will contain the location to what they selected.
I am using it in a pdf reader inside of a Fragment. Adding my code: but I do not know yet how I define the correct directory to choose my file.
val selectedFile = data?.data //The uri with the location of the file <p>
pdfView.fromUri(selectedFile).load() // Show the selected file
//Fragment view
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val intent = Intent()
.setType("*/*")
.setAction(Intent.ACTION_GET_CONTENT)
startActivityForResult(Intent.createChooser(intent, "Select a file"), 111)
return inflater.inflate(R.layout.fragment_sat,container,false)
}