Cursor object returning 0 rows after trying to query for phone number
I'm trying to access the phone number from ContactsContract.CommonDataKinds.Phone.NUMBER after getting the contact ID and I'm getting 0 rows. Not too sure if I'm handling the runtime permission well hence why I cannot access the phone number.
callSuspect.setOnClickListener {
requestPermission()
}
private fun requestPermission(){
when{
ContextCompat.checkSelfPermission(requireContext(), Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED -> {
if(phoneNumberUri == null){
Toast.makeText(requireContext(),"Select a suspect", Toast.LENGTH_SHORT ).show()
}
else{
parseSuspectsNumber(phoneNumberUri!!)
}
}
else ->{
requestPermissionLauncher.launch(Manifest.permission.READ_CONTACTS)
}
}
}
private fun parseSuspectsNumber(contactUri: Uri){
val queryFields = arrayOf(ContactsContract.Contacts._ID)
val queryCursor = requireActivity().contentResolver.query(contactUri, queryFields, null, null, null)
var suspectId: String? = null
queryCursor?.use{ cursor ->
if(cursor.moveToFirst()){
suspectId = cursor.getString(0)
}
}
val queryFieldsNumber = arrayOf(ContactsContract.CommonDataKinds.Phone.NUMBER)
val phoneUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI
val phoneWhereClause = "${ContactsContract.CommonDataKinds.Phone._ID} = ?"
val queryCursorNumber = requireActivity().contentResolver.query(phoneUri, queryFieldsNumber, phoneWhereClause, arrayOf(suspectId), null)
queryCursorNumber?.use{ cursor ->
if(cursor.moveToFirst()){
val phoneNumber = cursor.getString(0)
val dialNumber = Intent(Intent.ACTION_DIAL).apply{
data = Uri.parse("tel:$phoneNumber")
}
startActivity(dialNumber)
}
}
}