Я подаю заявку, и мне нужно синхронизировать текущие смс-сообщения, полученные / отправленные в течение недели, на мой веб-сервер.Это код, который у меня есть, но он получает все SMS-сообщения:
SharedPreferences settings = getSharedPreferences("MyPrefs", 0);
boolean firstTime = settings.getBoolean("FirstTime", true);
if (firstTime) {
Uri allMessage = Uri.parse("content://sms/");
ContentResolver cr = getContentResolver();
Cursor c = cr.query(allMessage, null, null, null, null);
while (c.moveToNext()) {
String row = c.getString(1);
//upload it all here
}
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("FirstTime", false);
editor.commit();
}
Другой вопрос, будет ли много проблем, если я отправлю каждое сообщение одно за другим?Должен ли я сгруппировать их вместе, превратить в XML / JSON и кодировать (вероятно, base64), а затем отправить на мой сервер?Но я боюсь, что он может превысить лимит отправки HTTP POST-параметров.
EDIT Я нашел решение, вам нужно использовать то, что запрос возвращает вам, поэтому5-й столбец - это дата для всех сообщений, поэтому вы можете использовать оператор if только для отправки сообщений, которые находятся в пределах 1 недели (604800 секунд).
Uri allMessage = Uri.parse("content://sms/");
ContentResolver cr = getContentResolver();
Cursor c = cr.query(allMessage, null, null, null, null);
while(c.moveToNext()){
int date = Math.round(Integer.parseInt(c.getString(4))/1000);
int time_now = Math.round(System.currentTimeMillis()/1000);
int difference = time_now - date;
if(difference < 604800){
String phoneNumber = c.getString(2);
String message = c.getString(11);
//this sms is within a week old.
}
}