I use this code to delete unread SMS messages, but it only works on Android 4.4, not on Android 7.0. What do I have to change in the code to make it work on 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 );
}
}
}
From 4.4 onwards, your app is not allowed to delete any SMS messages from the inbox unless it is the "default" SMS app.
From Android's own documentation:
Android 4.4 APIs
And from that blog: