Могу ли я удалить SMS из папки android в последней версии? - PullRequest
0 голосов
/ 16 марта 2020

Я хочу удалить смс из android папки «Входящие» при получении в моем приложении. Я уже исследовал stackoverflow и нашел коды, но он не работает. Я не уверен, что это потому, что я использую последний android, Gradle и эмулятор.

    private fun deleteSMS(message: String, number: String): Boolean {
        try {
            Log.d(TAG, "Deleting SMS from inbox")

            val uri = Uri.parse("content://sms/inbox")
            val c = this.contentResolver.query(uri, null, null, null, null)
            c?.let {
                if(!it.moveToFirst()) {
                    it.close()
                    return false
                }

                do {
                    val id = it.getInt(0)
                    val threadId = it.getInt(1)
                    val address = it.getString(2)
                    val body = it.getString(5)

                    Log.d(TAG, "address, body: $address : $body")
                    this.contentResolver.delete(Uri.parse("content://sms/$id"), null, null)
                }while (it.moveToNext())
            }

            c?.close()
            return true
        }catch (e: Exception) {
            Log.e(TAG, e.message)
            return false
        }
    }

Я пробовал этот код в java, но он также не работает. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 16 марта 2020

К сожалению, удаление подобных SMS-сообщений больше невозможно с Android 4.4 (KitKat), если только ваше приложение не является приложением SMS по умолчанию или устройство не имеет рута.

Также система теперь позволяет только приложению по умолчанию записывать данные сообщения поставщику, хотя другие приложения могут читать в любое время.

http://developer.android.com/about/versions/kitkat.html

Если вы попытаетесь в любом случае, он молча завершается сбоем - он ничего не удаляет, не вызывает никаких исключений и не отображает сообщения об ошибках.

Если вы намерены настроить таргетинг на 4.4 только в своем приложении, тогда this Обходной путь может помочь, но он не будет работать в более поздних версиях.

...