android的service中在后台弹出提示框

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();
    }
    
	@Override
	public 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();
    }
    
    
	@Override
	public 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);
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值