package com.sandro.smstotxlqqmail.ui; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import com.sandro.smstotxlqqmail.R; import com.sandro.smstotxlqqmail.dao.Dao; import com.sandro.smstotxlqqmail.util.MailSender; import com.sandro.smstotxlqqmail.util.MailSender.SendMailListener; public class MainActivity extends Activity { private TextView tv ; private Button emailBtn; private Dao dao; private static final int DIALOG_TEXT_ENTRY = 7; private MailThread mailThread; private String mail = ""; private String password = ""; private static final int START_MAIL_TESTING = 1; private static final int MAIL_TESTING_END = 2; /** * 进度条 */ private ProgressDialog mSpinner; private Dialog mailResultDialog; private Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch(msg.what){ case START_MAIL_TESTING: mSpinner = new ProgressDialog(MainActivity.this); mSpinner.requestWindowFeature(Window.FEATURE_NO_TITLE); mSpinner.setMessage("测试邮件发送中"); mSpinner.setOnKeyListener(new DialogInterface.OnKeyListener() { @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { return false; } }); mSpinner.show(); mailThread.start(); break; case MAIL_TESTING_END: if (mSpinner != null) { try { mSpinner.dismiss(); mSpinner.cancel(); } catch (Exception e) { } mSpinner = null; } handleMailResult((MailObj)msg.obj); break; } super.handleMessage(msg); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dao = Dao.getInstance(); setContentView(R.layout.main_layout); initComponents(); IntentFilter mIntentFilter = new IntentFilter(); mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); registerReceiver(mIntentReceiver, mIntentFilter); } private void initComponents() { tv = (TextView)this.findViewById(R.id.tv); emailBtn = (Button)this.findViewById(R.id.mail_setting_btn); emailBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { showDialog(DIALOG_TEXT_ENTRY); } }); if(dao.getEmail() != null && dao.getPassword()!=null){ emailBtn.setVisibility(View.GONE); }else{ emailBtn.setVisibility(View.VISIBLE); } } @Override protected Dialog onCreateDialog(int id){ switch (id) { case DIALOG_TEXT_ENTRY: LayoutInflater factory = LayoutInflater.from(this); final View textEntryView = factory.inflate( R.layout.alert_dialog_text_entry, null); final EditText mailEdit = (EditText)textEntryView.findViewById(R.id.username_edit); final EditText passwordEdit = (EditText)textEntryView.findViewById(R.id.password_edit); mailEdit.setText(this.mail); passwordEdit.setText(this.password); return new AlertDialog.Builder(MainActivity.this) .setTitle("email设置") .setView(textEntryView) .setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { mail = mailEdit.getText().toString(); password = passwordEdit.getText().toString(); mailThread = new MailThread(); mHandler.sendEmptyMessage(START_MAIL_TESTING); } }) .setNegativeButton("cancel",null).create(); } return null; } private void handleMailResult(MailObj obj){ LayoutInflater factory = LayoutInflater.from(this); final View dialogView = factory.inflate( R.layout.mail_result_dialog_layout, null); TextView tv = (TextView)dialogView.findViewById(R.id.mailResult); tv.setText(obj.result); if(mailResultDialog!=null && mailResultDialog.isShowing()){ mailResultDialog.dismiss(); mailResultDialog = null; } mailResultDialog = new AlertDialog.Builder(MainActivity.this) .setTitle("email测试失败") .setView(dialogView) .setPositiveButton("ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { mailResultDialog.dismiss(); } }) .create(); mailResultDialog.setCancelable(true); mailResultDialog.show(); if(obj.success){ mailResultDialog.setTitle("测试成功"); dao.setEmail(this.mail); dao.setPassword(password); emailBtn.setVisibility(View.GONE); } } private class MailThread extends Thread{ private MailThread(){ } @Override public void run(){ MailSender sm = new MailSender(new SendMailListener(){ @Override public void sendMailDone(boolean success, String result) { Message msg = mHandler.obtainMessage(MAIL_TESTING_END); msg.obj = new MailObj(success,result); mHandler.sendMessage(msg); } },mail,password); sm.sendEmail("test", "test"); } } private class MailObj{ private boolean success; private String result; private MailObj(boolean success,String result){ this.success = success; this.result = result; } } @Override protected void onDestroy() { this.unregisterReceiver(mIntentReceiver); super.onDestroy(); } private BroadcastReceiver mIntentReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_BATTERY_CHANGED)){ tv.setText("当前电量 :" + intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0)); } } }; }