package org.commcare.dalvik.activities;
import org.commcare.android.javarosa.AndroidLogger;
import org.commcare.android.net.HttpRequestGenerator;
import org.commcare.dalvik.R;
import org.commcare.dalvik.application.CommCareApplication;
import org.javarosa.core.services.Logger;
import org.javarosa.core.services.locale.Localization;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
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;
public class ReportProblemActivity extends Activity implements OnClickListener {
/*
* (non-Javadoc)
* @see android.app.Activity#onCreate(android.os.Bundle)
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_report_problem);
Button submitButton = (Button)findViewById(R.id.ReportButton01);
submitButton.setText(Localization.get("problem.report.button"));
submitButton.setOnClickListener(this);
((TextView)findViewById(R.id.ReportPrompt01)).setText(Localization.get("problem.report.prompt"));
}
/*
* (non-Javadoc)
* @see android.view.View.OnClickListener#onClick(android.view.View)
*/
@Override
public void onClick(View v) {
EditText mEdit = (EditText)findViewById(R.id.ReportText01);
String reportEntry = mEdit.getText().toString();
Logger.log(AndroidLogger.USER_REPORTED_PROBLEM, reportEntry);
setResult(RESULT_OK);
sendReportEmail(reportEntry);
finish();
}
public String buildMessage(String userInput){
SharedPreferences prefs = CommCareApplication._().getCurrentApp().getAppPreferences();
String username = CommCareApplication._().getSession().getLoggedInUser().getUsername();
String version = CommCareApplication._().getCurrentVersionString();
String domain = prefs.getString(HttpRequestGenerator.USER_DOMAIN_SUFFIX,"not found");
String postURL = prefs.getString("PostURL", null);;
String message = "Problem reported via CommCareODK. " +
"\n User: " + username +
"\n Domain: " + domain +
"\n PostURL: " + postURL +
"\n CCODK version: " + version +
"\n Device Model: " + Build.MODEL +
"\n Manufacturer: " + Build.MANUFACTURER +
"\n Android Version: " + Build.VERSION.RELEASE +
"\n Message: " + userInput;
return message;
}
public void sendReportEmail(String report){
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"commcarehq-support@dimagi.com"});
i.putExtra(Intent.EXTRA_TEXT, this.buildMessage(report));
i.putExtra(Intent.EXTRA_SUBJECT , "Mobile Error Report");
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(ReportProblemActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
}
}