diff --git a/app/src/main/java/de/server47/messageexport/MainActivity.java b/app/src/main/java/de/server47/messageexport/MainActivity.java index 18835bb..2f7fb23 100644 --- a/app/src/main/java/de/server47/messageexport/MainActivity.java +++ b/app/src/main/java/de/server47/messageexport/MainActivity.java @@ -4,10 +4,12 @@ import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.net.Uri; +import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; +import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.Toast; @@ -30,6 +32,7 @@ public class MainActivity extends Activity { Button bExport; RadioButton rbRcs, rbSms, rbMms; + ProgressBar pbStatus; final static int typeSMS = 0; final static int typeMMS = 1; @@ -49,6 +52,7 @@ public class MainActivity extends Activity rbRcs = (RadioButton)findViewById(R.id.rbRcs); rbSms = (RadioButton)findViewById(R.id.rbSms); rbMms = (RadioButton)findViewById(R.id.rbMms); + pbStatus = (ProgressBar)findViewById(R.id.pbStatus); bExport.setOnClickListener(new View.OnClickListener() { @@ -73,19 +77,37 @@ public class MainActivity extends Activity case requestCodeExport: if (resultCode == RESULT_OK) { - 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(); + AsyncTask asyncTaskExport = new AsyncTask() + { + @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(); } break; } } } - String getExportString() + String getExportString(AsyncTask asyncTaskReference) { List> response; @@ -100,6 +122,8 @@ public class MainActivity extends Activity { messageCount = response.size(); + asyncTaskReference.publishProgress((int)Math.round(messageCount/response.size())); + StringBuilder export = new StringBuilder(); export.append(""); @@ -122,9 +146,14 @@ public class MainActivity extends Activity type: 2 = outbound */ + export.append(" + + +