Progress display

This commit is contained in:
2021-09-18 22:30:39 +02:00
parent ed1445dd4e
commit 165df24f0c
2 changed files with 102 additions and 100 deletions

View File

@ -65,6 +65,99 @@ public class MainActivity extends Activity
});
}
class AsyncTaskExport extends AsyncTask<Uri, Integer, Void>
{
String getExportString()
{
List<Map<String,String>> response;
if(rbSms.isChecked())
response = readMessages(typeSMS);
else if(rbMms.isChecked())
response = readMessages(typeMMS);
else
response = readMessages(typeRCS);
if(response.size() > 0)
{
messageCount = response.size();
publishProgress((int)Math.round(messageCount/response.size()));
StringBuilder export = new StringBuilder();
export.append("<?xml-stylesheet type=\"text/xsl\" href=\"sms.xsl\"?>");
export.append("<smses count=\"" + String.valueOf(response.size()) + "\"");
export.append(" backup_set=\"" + String.valueOf(Calendar.getInstance().getTimeInMillis()) + "\"");
export.append(" backup_date=\"" + String.valueOf(Calendar.getInstance().getTimeInMillis()) + "\"");
export.append(" type=\"full\">");
// 05.05.2001 19:15:00
String pattern = "dd.MM.yyyy H:m:s";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
for(int i = 0; i < response.size(); i++)
{
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(Long.parseLong(response.get(i).get("date")));
/*
type: 1 = inbound
type: 2 = outbound
*/
export.append("<sms protocol=\"0\"");
if(!StringUtils.isEmpty(response.get(i).get("remote_uri")))
export.append(" address=\"" + response.get(i).get("remote_uri").replace("tel:", "") + "\"");
else
export.append(" address=\"" + response.get(i).get("address") + "\"");
export.append(
" date=\"" + response.get(i).get("date") + "\"" +
" type=\"" + response.get(i).get("type") + "\"" +
" subject=\"null\"" +
" body=\"" + StringEscapeUtils.escapeXml11(response.get(i).get("body")).replace("\n", "&#10;") + "\"" +
" toa=\"null\"" +
" sc_toa=\"null\"" +
" service_center=\"null\"" +
" read=\"1\"" +
" status=\"-1\"" +
" locked=\"0\"" +
" date_sent=\"" + response.get(i).get("date_sent") + "\"" +
" sub_id=\"-1\"" +
" readable_date=\"" + simpleDateFormat.format(cal.getTime()) + "\"" +
" contact_name=\"(Unknown)\"/>"
);
}
export.append("</smses>");
return export.toString();
}
return null;
}
@Override
protected Void doInBackground(Uri... uriTree)
{
String dataToWrite = getExportString();
if(!StringUtils.isEmpty(dataToWrite))
exportFiles(uriTree[0], dataToWrite);
else
Toast.makeText(MainActivity.this, "Error reading messages. Can\'t export.", Toast.LENGTH_SHORT).show();
return null;
}
@Override
protected void onProgressUpdate(Integer... values)
{
super.onProgressUpdate(values);
pbStatus.setProgress(values[0]);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
@ -77,107 +170,14 @@ public class MainActivity extends Activity
case requestCodeExport:
if (resultCode == RESULT_OK)
{
AsyncTask<Void, Integer, Void> asyncTaskExport = new AsyncTask<Void, Integer, Void>()
{
@Override
protected Void doInBackground(Void... voids)
{
Uri uriTree = data.getData();
String dataToWrite = getExportString();
if(!StringUtils.isEmpty(dataToWrite))
exportFiles(uriTree, dataToWrite);
else
Toast.makeText(MainActivity.this, "Error reading messages. Can\'t export.", Toast.LENGTH_SHORT).show();
return null;
}
@Override
protected void onProgressUpdate(Integer... values)
{
super.onProgressUpdate(values);
pbStatus.setProgress(values[0]);
}
};
asyncTaskExport.execute();
AsyncTask<Uri,Integer,Void> exportTask = new AsyncTaskExport();
exportTask.execute(data.getData());
}
break;
}
}
}
String getExportString(AsyncTask<Void,Integer,Void> asyncTaskReference)
{
List<Map<String,String>> response;
if(rbSms.isChecked())
response = readMessages(typeSMS);
else if(rbMms.isChecked())
response = readMessages(typeMMS);
else
response = readMessages(typeRCS);
if(response.size() > 0)
{
messageCount = response.size();
asyncTaskReference.publishProgress((int)Math.round(messageCount/response.size()));
StringBuilder export = new StringBuilder();
export.append("<?xml-stylesheet type=\"text/xsl\" href=\"sms.xsl\"?>");
export.append("<smses count=\"" + String.valueOf(response.size()) + "\"");
export.append(" backup_set=\"" + String.valueOf(Calendar.getInstance().getTimeInMillis()) + "\"");
export.append(" backup_date=\"" + String.valueOf(Calendar.getInstance().getTimeInMillis()) + "\"");
export.append(" type=\"full\">");
// 05.05.2001 19:15:00
String pattern = "dd.MM.yyyy H:m:s";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
for(int i = 0; i < response.size(); i++)
{
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(Long.parseLong(response.get(i).get("date")));
/*
type: 1 = inbound
type: 2 = outbound
*/
export.append("<sms protocol=\"0\"");
if(!StringUtils.isEmpty(response.get(i).get("remote_uri")))
export.append(" address=\"" + response.get(i).get("remote_uri").replace("tel:", "") + "\"");
else
export.append(" address=\"" + response.get(i).get("address") + "\"");
export.append(
" date=\"" + response.get(i).get("date") + "\"" +
" type=\"" + response.get(i).get("type") + "\"" +
" subject=\"null\"" +
" body=\"" + StringEscapeUtils.escapeXml11(response.get(i).get("body")).replace("\n", "&#10;") + "\"" +
" toa=\"null\"" +
" sc_toa=\"null\"" +
" service_center=\"null\"" +
" read=\"1\"" +
" status=\"-1\"" +
" locked=\"0\"" +
" date_sent=\"" + response.get(i).get("date_sent") + "\"" +
" sub_id=\"-1\"" +
" readable_date=\"" + simpleDateFormat.format(cal.getTime()) + "\"" +
" contact_name=\"(Unknown)\"/>"
);
}
export.append("</smses>");
return export.toString();
}
return null;
}
void exportFiles(Uri uriTree, String content)
{
String fileName = "Message_export_" + String.valueOf(Calendar.getInstance().getTimeInMillis()) + ".xml";