我需要从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及以上设备的号码吗?