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);
}
}
android的service中在后台弹出提示框
最新推荐文章于 2023-12-01 10:19:36 发布