package com.bluevia.android.samples.sms;
import java.io.IOException;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.bluevia.android.commons.exception.BlueviaException;
import com.bluevia.android.messagery.mo.sms.client.BVMoSms;
import com.bluevia.android.messagery.mo.sms.data.SmsMessage;
import com.bluevia.android.samples.ApplicationInfo;
import com.bluevia.android.samples.BlueviaAsyncTask;
import com.bluevia.android.samples.R;
public class SmsMOActivity extends Activity {
public static final String TAG = "SmsMOActivity";
private EditText mShortNumber;
private Button mGetMessages;
private TextView mResult;
private BVMoSms mClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sms_mo_activity);
mShortNumber = (EditText) findViewById(R.id.short_number);
mGetMessages = (Button) findViewById(R.id.get_messages);
mResult = (TextView) findViewById(R.id.result);
mGetMessages.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
getMessages();
}
});
createClient();
}
@Override
protected void onDestroy() {
super.onDestroy();
//Close the client
closeClient();
}
private void createClient(){
closeClient();
try {
mClient = new BVMoSms(ApplicationInfo.MODE,
ApplicationInfo.CONSUMER_KEY,
ApplicationInfo.CONSUMER_SECRET);
} catch (BlueviaException e){
Log.e(TAG, e.getMessage());
}
}
private void closeClient(){
if (mClient != null)
mClient.close();
mClient = null;
}
private class GetSmsAsyncTask extends BlueviaAsyncTask<String, Void, ArrayList<SmsMessage>>{
public GetSmsAsyncTask(Context context) {
super(context);
}
@Override
protected ArrayList<SmsMessage> doInBackground(String... params) {
ArrayList<SmsMessage> messages = null;
String registrationId = params[0];
if (registrationId == null){
Toast.makeText(SmsMOActivity.this, "Short number is mandatory", Toast.LENGTH_SHORT).show();
} else {
try {
messages = mClient.getAllMessages(registrationId);
} catch (BlueviaException e){
Log.e(TAG, e.getMessage());
errorMessage = e.getMessage();
} catch (IOException e) {
Log.e(TAG, e.getMessage());
errorMessage = e.getMessage();
}
}
return messages;
}
@Override
protected void onPostExecute(ArrayList<SmsMessage> result) {
super.onPostExecute(result);
if (result != null) {
if (!result.isEmpty()){
StringBuffer composedStatus = new StringBuffer();
for (SmsMessage message : result) {
Log.i(TAG, message.getMessage());
composedStatus.append("> " + message.getDate() + " : " +
message.getDestinationList().get(0) + " : " + message.getMessage() + ";\n");
}
mResult.setText(composedStatus);
} else mResult.setText("No messages");
} else {
mResult.setText(errorMessage);
}
}
}
private void getMessages(){
String[] params = new String[1];
params[0] = mShortNumber.getText().toString();
new GetSmsAsyncTask(this).execute(params);
}
}