#android #kotlin #android-contentprovider
Вопрос:
Я пытаюсь подсчитать количество сообщений, полученных с определенного номера, и еще одним условием является то, что мне нужно подсчитать количество последних 10 дней. Я попытался использовать распознаватель содержимого и выполнить запрос, но смог вычислить только общее количество сообщений, полученных от определенного числа, но я не понимаю, как я должен фильтровать сообщения за последние 10 дней? Мой код таков :
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.btnSubmit.setOnClickListener {
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.READ_SMS)
!= PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
Array(1) { android.Manifest.permission.READ_SMS },
111
)
} else {
binding.countText.text =
getSmsCountByNumber(binding.etNumber.text.toString()).toString()
}
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == 111 amp;amp; grantResults[0] == PackageManager.PERMISSION_GRANTED) getSmsCountByNumber(
binding.etNumber.text.toString()
)
}
@SuppressLint("NewApi")
fun getSmsCountByNumber(senderNumber: String): Int {
var totalSMS = 0
val countryCode = " 91"
applicationContext.contentResolver.query(
Telephony.Sms.CONTENT_URI,
null,
null,
null,
null
)?.use { cursor ->
// if (Telephony.Sms.DATE == LocalDate.now().toString())
while (cursor.moveToNext()) {
val number =
cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Sms.ADDRESS));
val date =
cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Sms.DATE))
if (number == senderNumber || number == countryCode senderNumber) {
totalSMS = 1
}
Log.d("totalSMSCount", totalSMS.toString())
}
}
return totalSMS
}
}
Все находится в основном действии, и XML состоит из одного текста редактирования и кнопки.
Пожалуйста, помогите мне понять, как я должен получить количество сообщений за последние 10 дней.