android - 如何从适配器调用 OnRequestPermissionResult 方法
问题描述
我想使用回收站视图中显示的号码拨打电话。
override fun onBindViewHolder(holder: MyViewholder, position: Int) {
val currentItem = userlist[position]
holder.txtFirstName.text = currentItem.firstName
holder.txtLastName.text = currentItem.lastName
holder.txtAge.text = currentItem.phonenumber.toString()
num = currentItem.phonenumber.toString()
holder.call.setOnClickListener {
val number: String = currentItem.phonenumber.toString()
if (ContextCompat.checkSelfPermission(
context,
android.Manifest.permission.CALL_PHONE
) != PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
context as Activity,
arrayOf(android.Manifest.permission.CALL_PHONE),
REQUEST_CALL
)
} else {
val dial = "tel:$number"
val intent = Intent(Intent.ACTION_CALL, Uri.parse(dial))
context.startActivity(intent)
}
}
}
我无法在适配器内覆盖 OnResquestPermissionResult()。
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
if (requestCode == REQUEST_CALL) {
if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
val number: String = num
if (ContextCompat.checkSelfPermission(
context,
android.Manifest.permission.CALL_PHONE
) != PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
context as Activity, arrayOf(android.Manifest.permission.CALL_PHONE),
REQUEST_CALL
)
} else {
onRequestPermissionsResult(requestCode,permissions,grantResults)
val dial = "tel:$number"
val intent = Intent(Intent.ACTION_CALL, Uri.parse(dial))
context.startActivity(intent)
}
} else {
Toast.makeText(context, "Permission Denied", Toast.LENGTH_SHORT).show()
}
}
}
如果我尝试在活动中覆盖 OnResquestPermissionResult(),我将无法从视图中传递当前电话号码。
解决方案
我删除了整个代码:
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
if (requestCode == REQUEST_CALL) {
if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
val number: String = num
if (ContextCompat.checkSelfPermission(
context,
android.Manifest.permission.CALL_PHONE
) != PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
context as Activity, arrayOf(android.Manifest.permission.CALL_PHONE),
REQUEST_CALL
)
} else {
onRequestPermissionsResult(requestCode,permissions,grantResults)
val dial = "tel:$number"
val intent = Intent(Intent.ACTION_CALL, Uri.parse(dial))
context.startActivity(intent)
}
} else {
Toast.makeText(context, "Permission Denied", Toast.LENGTH_SHORT).show()
}
}
}
一切正常。
推荐阅读
- kubernetes - “使密钥保密”失败并出现错误“make:***没有规则来制作目标‘密钥’。停止。”
- azure-active-directory - 如何在 OpenIdConnectConfigurationRetriever.GetAsync 调用中使用公司代理?
- javascript - 我得到“无法设置属性‘innerHTML’为空
- javascript - Bootstrap 4导航下拉悬停在桌面/点击移动
- asp.net-mvc - aspnet mvc 页面在未使用几分钟后崩溃
- javascript - $('#iframe').load() 在生产中响应很晚,尽管它在开发(本地)环境中运行良好
- php - 仅在 is_archive woocommerce 时显示价格
- solr - SOLR 多对多,带有额外的列映射
- c# - 允许用户在基本计算器中使用点表示十进制数
- python - TypeError:无法将 JpegImageFile 连接到字节