@ -65,117 +65,117 @@ public class MainActivity extends Activity
} ) ;
}
@Override
protected void onActivityResult ( int requestCode , int resultCode , Intent data )
class AsyncTaskExport extends AsyncTask < Uri , Integer , Void >
{
super . onActivityResult ( requestCode , resultCode , data ) ;
if ( resultCode = = RESULT_OK )
String getExportString ( )
{
switch ( requestCode )
{
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 ( ) ;
}
break ;
}
}
}
String getExportString ( AsyncTask < Void , Integer , Void > asyncTaskReference )
{
List < Map < String , String > > response ;
List < Map < String , String > > response ;
if ( rbSms . isChecked ( ) )
response = readMessages ( typeSMS ) ;
else if ( rbMms . isChecked ( ) )
response = readMessages ( typeMMS ) ;
else
response = readMessages ( typeRCS ) ;
if ( rbSms . isChecked ( ) )
response = readMessages ( typeSMS ) ;
else if ( rbMms . isChecked ( ) )
response = readMessages ( typeMMS ) ;
else
response = readMessages ( typeRCS ) ;
if ( response . size ( ) > 0 )
{
messageCount = response . size ( ) ;
if ( response . size ( ) > 0 )
{
messageCount = response . size ( ) ;
asyncTaskReference. publishProgress( ( int ) Math . round ( messageCount / response . size ( ) ) ) ;
publishProgress ( ( int ) Math . round ( messageCount / response . size ( ) ) ) ;
StringBuilder export = new StringBuilder ( ) ;
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\">" ) ;
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 ) ;
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" ) ) ) ;
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\"" ) ;
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" ) + "\"" ) ;
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 (
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" , " " ) + "\"" +
" 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)\"/>"
) ;
" type=\"" + response . get ( i ) . get ( "type" ) + "\"" +
" subject=\"null\"" +
" body=\"" + StringEscapeUtils . escapeXml11 ( response . get ( i ) . get ( "body" ) ) . replace ( "\n" , " " ) + "\"" +
" 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 ( ) ;
}
export . append ( "</smses>" ) ;
return export . toString ( ) ;
return null ;
}
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 )
{
super . onActivityResult ( requestCode , resultCode , data ) ;
if ( resultCode = = RESULT_OK )
{
switch ( requestCode )
{
case requestCodeExport :
if ( resultCode = = RESULT_OK )
{
AsyncTask < Uri , Integer , Void > exportTask = new AsyncTaskExport ( ) ;
exportTask . execute ( data . getData ( ) ) ;
}
break ;
}
}
}
void exportFiles ( Uri uriTree , String content )