android的service中弹出界面import javax.mail.Folder;import javax.mail.Store;import javax.mail.event.ConnectionEvent;import javax.mail.event.ConnectionListener;import javax.mail.event.MessageCountEvent;import javax.mail.event.MessageCountListener;import android.app.Service;import android.content.Context;import android.content.Intent;import android.graphics.PixelFormat;import android.os.Binder;import android.os.Handler;import android.os.IBinder;import android.os.Message;import android.util.Log;import android.view.Gravity;import android.view.View;import android.view.WindowManager;import android.view.WindowManager.LayoutParams;import android.widget.TextView;import com.lidroid.xutils.util.LogUtils;import com.qwtech.letvmailvertical.beans.Email;import com.qwtech.letvmailvertical.mailutils.ConnUtil;import com.qwtech.letvmailvertical.mailutils.MailHelper;public class ReadEmailService extends Service {private final IBinder binder = new MyBinder();int sleeptime = 10 * 1000; //1分钟    private Context mContext;    private View v;    Store store;    Email email;    Folder folder = null;        private int TO_LOGIN = 1;    private int FLASH_DATE = 2;    private int SHOW_DATE = 5;    private int HIDE_DATE = 8;    private int NO_DATE = 12;        public void onCreate() {        super.onCreate();    }    @Overridepublic IBinder onBind(Intent intent){return binder;}  /**      * 该类是获得Service对象      * @author Administrator      *      */      public class MyBinder extends Binder{          public ReadEmailService getService(){              return ReadEmailService.this;          }      }    Handler handler = new Handler() {    public void handleMessage(Message msg) {    if (TO_LOGIN == msg.what)    {    LogUtils.e("FLASH_DATE休眠介绍开始工作==>ReadEmailService服务证在运行!");    login();    return;    }    if (FLASH_DATE == msg.what){//    LogUtils.e("FLASH_DATE休眠介绍开始工作==>ReadEmailService服务证在运行!");flashDate();return;}    if (SHOW_DATE == msg.what)    {    String msgs = (String) msg.obj;    showSystemDialog(msgs);    com.qwtech.letvmailvertical.utils.Utils.showToast(mContext, "后台服务收到了新邮件!");    email = null;    LogUtils.e("SHOW_DATE==>ReadEmailService服务证在运行!");    return;    }    if (NO_DATE == msg.what)    {    String msgs = (String) msg.obj;    LogUtils.e("NO_DATE"+msgs);    return;    }    if (HIDE_DATE == msg.what)    {    if (v !=null){v.setVisibility(View.GONE);}    LogUtils.e("HIDE_DATE==>ReadEmailService服务证在运行!");    return;    }    super.handleMessage(msg);    }    };    private void login() {        new Thread(new Runnable() {            @Override            public void run() {            LogUtils.e("登陆开始");            // 创建IMAP协议的Store对象 try{                store = ConnUtil.loginbyService(mContext);                if (store == null && store.isConnected()) {                LogUtils.e("登陆出错了");                Message msg = new Message();    msg.obj = "登陆出错了!";    msg.what = NO_DATE;    handler.sendMessage(msg);                }                // 获得收件箱                 folder = store.getFolder("INBOX");                 folder.addConnectionListener(new ConnectionListener()         {         @Override         public void opened(ConnectionEvent arg0)         {         LogUtils.e("连接监听事件:opened");         }                  @Override         public void disconnected(ConnectionEvent arg0)         {         LogUtils.e("连接监听事件:disconnected");         }                  @Override         public void closed(ConnectionEvent arg0)         {         LogUtils.e("连接监听事件:closed");         }         });                // 以读写模式打开收件箱                 folder.open(Folder.READ_WRITE);                handler.sendEmptyMessage(FLASH_DATE);}catch (Exception e1){e1.printStackTrace();}if (folder == null){return;}                folder.addMessageCountListener(new MessageCountListener() {                    public void messagesRemoved(MessageCountEvent messagecountevent) {                    }                    @Override                    public void messagesAdded(MessageCountEvent ev) {                        System.out.println("new message");                        javax.mail.Message[] msgs = ev.getMessages();                        Message msg = new Message();    msg.obj = ""+msgs.length;    msg.what = SHOW_DATE;    handler.sendMessage(msg);//                        for (int i = 0; i < msgs.length; i++) {//                            try {////                            Email.parseMessage(msgs[i]);//                            email = new Email(msgs[i],false);//                            //                            } catch (Exception e) {//                                e.printStackTrace();//                            }//                        }                    }                });            }        }).start();    }        private void flashDate(){ new Thread(new Runnable() {            @Override            public void run() {            try         {            if (folder != null && folder.isOpen()){            MailHelper.getInstance(mContext).getNewMail(folder);            LogUtils.e("email"+email);    if (email != null)    {    handler.sendEmptyMessage(SHOW_DATE);    LogUtils.e("收到了新邮件:"+email.getSubject());    }else{    Message msg = new Message();    msg.obj = "暂未收到新邮件!";    msg.what = NO_DATE;    handler.sendMessage(msg);    }}else{LogUtils.e("掉线重连");folder = null;handler.sendEmptyMessage(TO_LOGIN);}            }    catch (Exception e)    {    e.printStackTrace();    }            }        }).start();    }        @Overridepublic int onStartCommand(Intent intent, int flags, int startId){mContext = getApplicationContext();LogUtils.e("onStartCommand->ReadEmailService服务证在运行!");mTasks.run();return super.onStartCommand(intent, flags, startId);}int intCounter = 0 ;private Runnable mTasks = new Runnable()  {    public void run()    {      intCounter++;      Log.i("HIPPO", "Counter:"+Integer.toString(intCounter));      // 添加具体需要做的事情:      handler.sendEmptyMessage(FLASH_DATE);      handler.postDelayed(mTasks, sleeptime);    }  };    private void showSystemDialog(String emailnum) {         /* create ui */  if (v != null){v.setVisibility(View.VISIBLE);return;}v = View.inflate(mContext, R.layout.view_back_dialog, null);          TextView tvEmailInfos = (TextView) v.findViewById(R.id.tvEmailInfos);        tvEmailInfos.setText("你有"+emailnum+"封新邮件!");                /* set size & pos */         WindowManager.LayoutParams lp = new WindowManager.LayoutParams();;          WindowManager wManager = (WindowManager) getSystemService(WINDOW_SERVICE);         lp.type = WindowManager.LayoutParams.TYPE_PHONE; // 设置window type        lp.format = PixelFormat.RGBA_8888; // 设置图片格式,效果为背景透明        lp.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;        lp.width = LayoutParams.WRAP_CONTENT;        lp.height = LayoutParams.WRAP_CONTENT;        lp.gravity = Gravity.LEFT | Gravity.BOTTOM;        wManager.addView(v, lp);        handler.sendEmptyMessageDelayed(HIDE_DATE, 3000);}}


更多相关文章

  1. Android(安卓)Studio Plugins问题
  2. Android如何从服务器获取图片
  3. 如何打包你自己的apk程序到Android里?
  4. 开发环境搭建
  5. Android(安卓)CTS(兼容性测试)
  6. 开发环境搭建
  7. 对android的android:taskAffinity初识
  8. Android(安卓)客户端将位置信息发送给服务端
  9. AndroiManifest.xml文件中android属性

随机推荐

  1. Android(安卓).9图片使用报错...报错:AAP
  2. Android(安卓)Transition(Android过渡动画
  3. android 获取.thumbnail文件下的小图标
  4. Android——NDK下载提示缺少toolchains问
  5. Android--用Pull解析器将对象解析成xml文
  6. 2011.07.05(3)——— android PopupWindo
  7. ImageView的scaletype属性
  8. Android(安卓)在非UI线程直接更新UI信息
  9. android 消息提醒(Toast,Notification)
  10. Android(安卓)图片拖动和缩放