我需要从incoming call得到phonenumber,它使用这种方法在Android 12设备下工作得很好

val number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER)

但对于Android 12和更高版本的设备(TelephonyManager.EXTRA_INCOMING_NUMBER),意向中的数据不可用.

没有发布 list 权限,如果需要,我可以添加任何权限.我已将此权限添加到我的 list 中

    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.READ_CALL_LOG" />
    <uses-permission android:name="android.permission.WRITE_CALL_LOG" />

我也try 了contentResolver查询,但它给出了光标中倒数第二的号码数据,而不是当前的来电数据.

val cancellationSignal = CancellationSignal()
val cursor = context.contentResolver.query(
    CallLog.Calls.CONTENT_URI,
    null,
    CallLog.Calls.TYPE + " = ?",
    arrayOf(CallLog.Calls.INCOMING_TYPE.toString()),
    CallLog.Calls.DATE + " DESC",
    cancellationSignal
)
if (cursor != null && cursor.moveToFirst()) {
    val indexNumber = cursor.getColumnIndex(CallLog.Calls.NUMBER)
    val number = cursor.getString(indexNumber)
    print(number)
    cancellationSignal.cancel()
    cursor.close()
}

有人知道如何查找Android 12及以上设备的号码吗?

推荐答案

在Call中try 此操作.详细信息

 private fun extractPhoneNumber(callDetails: Call.Details): String? {
    val handle = callDetails.handle
    if (handle != null) {
        // Attempt to extract phone number from the handle
        return handle.schemeSpecificPart
    } else {
        // Handle is null, try other methods if available
        val gatewayInfo = callDetails.gatewayInfo
        if (gatewayInfo != null) {
            return gatewayInfo.originalAddress.schemeSpecificPart
        }
    }
    return null
}

Android相关问答推荐

更新画布上的绘图以具有水平填充

错误:无法解析Symbol@style/Theme. Androidstudio in AndroidManifest.html for Kotlin Android Development''

关于BLE扫描工作原理的说明

懒惰的垂直网格中盒子的重量-Jetpack组合

关闭导致Kotlin中的内存泄漏?

请求标头为空/无法通过拦截器获取

Modifer.Align()不适用于行/列/框中的文本.未解决的作用域实例错误

我怎样才能画一条线在喷气背包组成和有一个自定义的角落?

如何制作安卓';s FileProvider在Android 11上使用外部存储+

jetpackcompose-如何对解析后的复杂对象进行状态提升?

警告:应用必须面向 Android 13(API 级别 33)或更高版本.确实如此

请求访问小部件中的位置权限

我如何比较多个时间范围并在 Android Compose 中并排显示它们

只能从同一个库组内调用成功(引用groupId=androidx.work from groupId=My Composable)

任务 ':app:checkReleaseDuplicateClasses' 执行失败

我该怎么做文本计时器

单击过go 的文章时 NewsApp 崩溃

如何在 Jetpack Compose 中为中心对齐设置动画?

如何在 Dolphin 中启用 android studio new logcat | 2021.3.1 金丝雀 6?

为什么我不能在屏幕外拿任何物体