Reputation: 315
Task: Upload an image which the user can choose from the device.
How can I open the file chooser window on a button press in an Android app using Kotlin?
Upvotes: 13
Views: 22977
Reputation: 11
I am using it in a PDF reader inside of a Fragment.
My code (without defining 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)
}
Upvotes: 0
Reputation: 3016
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 of what they selected.
Upvotes: 25