Удалить смс сообщения на Android 4.4 и 7.0

Я использую этот код для удаления непрочитанных SMS-сообщений, но он работает только на Android 4.4, а не на Android 7.0. Что мне нужно изменить в коде, чтобы он работал на Android 7.0?

void __fastcall TForm1::Button4Click(TObject *Sender)
{
_di_JCursor cursor;
_di_Jnet_Uri uri;

uri = StrToJURI( "content://sms" );

cursor = SharedActivity()->getContentResolver()->query( uri, nullptr, StringToJString(L"read = 0"), nullptr, nullptr );

if ( cursor )
{
while( cursor->moveToNext() )
{
int adresidx = cursor->getColumnIndex( StringToJString(L"address") );
int sms_id = cursor->getColumnIndex( StringToJString(L"_id") );
String adres = JStringToString( cursor->getString(adresidx) );
String smsid = JStringToString( cursor->getString(sms_id) );

TJavaObjectArray__1<_di_JString> *arg = new TJavaObjectArray__1<_di_JString>(1);
arg->Items[0] = StringToJString(smsid);
SharedActivity()->getContentResolver()->Delete( uri, StringToJString("_ID=?"), arg );
}
}
}

1

Решение

Начиная с версии 4.4, вашему приложению не разрешается удалять любые SMS-сообщения из входящих сообщений, если только это не SMS-приложение «по умолчанию».

Из собственной документации Android:

API Android 4.4

Начиная с Android 4.4, системные настройки позволяют пользователям выбирать «приложение SMS по умолчанию». После выбора только SMS-приложение по умолчанию может писать в SMS-провайдер и только приложение SMS по умолчанию получает SMS_DELIVER_ACTION трансляция, когда пользователь получает SMS или WAP_PUSH_DELIVER_ACTION трансляция, когда пользователь получает MMS. Приложение SMS по умолчанию отвечает за запись сведений поставщику SMS при получении или отправке нового сообщения.

Другие приложения, которые не выбраны в качестве приложения SMS по умолчанию, могут только читать поставщика SMS, но также могут быть уведомлены, когда приходит новое SMS, прослушивая SMS_RECEIVED_ACTION широковещательная рассылка, которая не подлежит прерыванию, может быть доставлена ​​нескольким приложениям. Эта трансляция предназначена для приложений, которые — хотя и не выбраны в качестве приложения SMS по умолчанию — должны читать специальные входящие сообщения, например, для проверки номера телефона.

Для получения дополнительной информации читайте пост в блоге, Готовим ваши SMS-приложения для KitKat

И из этого блога:

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

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector