模仿QQ按下返回键,程序后台运行,点击通知使其重新运行的应用

      标题有点乱,最近在做android的毕业设计,题目是个人备忘录。废话不多说,一开始我是想实现这样的应用:用户双击两次返回键进行程序的退出,同时又发出通知:该备忘录正在后台运行,以后用户点击该通知就可以直接进入该应用主界面。(其实就是模仿qq的界面,而且该通知用户是不可以直接关掉的。 

    1.主界面代码:

   

/*
 * 用户启动该软件的主界面,显示从数据库查找的记录,可以点击首页或者末页,也可以点击前后页。
 * 
 * 
 */
package com.note;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.note.Settings;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class MainShow extends Activity {
	// 声明通知管理器
	private NotificationManager notificationManager = null;
	private Intent intent = null;
	private PendingIntent pendingIntent = null;
	// 声明Notification对象
	private Notification notification = null;
	boolean isExit; // 判断用户是否要按两次返回键进行退出
	@SuppressWarnings("unchecked")
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setProgressBarVisibility(true); // 设置进度条可见
		setContentView(R.layout.mainshow);
		// 初始化NotificationManager对象
		notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		// 点击通知时转移内容
		intent = new Intent(getApplicationContext(), MainShow.class);
		// 主要设置点击通知的时显示内容的类
		pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0,
				intent, 0);
		// 构造Notification对象
		notification = new Notification();

	}


	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) { //
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			exit();
			return false;
		} else {
			return super.onKeyDown(keyCode, event);
		}
	}

	@SuppressWarnings("deprecation")
	public void exit() {
		if (!isExit) {
			isExit = true;
			Toast.makeText(getApplicationContext(), "再按一次退出程序",
					Toast.LENGTH_SHORT).show();
			// 设置通知在状态栏显示的图标
			notification.icon = R.drawable.bgimg2;
			// 当我们点击通知时显示的内容
			notification.tickerText = "个人备忘录正在后台运行";
			// 通知时发出的声音
			notification.defaults = Notification.DEFAULT_SOUND;
			// 设置同时显示的参数
			notification.setLatestEventInfo(getApplicationContext(), "个人备忘录","个人备忘录正在后台运行
", pendingIntent);
			// 用户无法去除该通知
			notification.flags |= Notification.FLAG_NO_CLEAR;
			// 可以理解为执行这个通知
			notificationManager.notify(0, notification);
			mHandler.sendEmptyMessageDelayed(0, 2000);
		} else {
			System.exit(0); 
                        

			// 杀死所有进程
			Intent startMain = new Intent(Intent.ACTION_MAIN);
			startMain.addCategory(Intent.CATEGORY_HOME);
			startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			startActivity(startMain);
			android.os.Process.killProcess(android.os.Process.myPid());
		}
	}

	Handler mHandler = new Handler() {

		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			super.handleMessage(msg);
			isExit = false;
		}

	};


}
     2.主界面截图如下:


      界面的代码很简单,就不贴出来了,如果想要源代码我可以发给你的。

    3.用户点击返回键时,发出通知,结果如下:

  



        上述通知大部分软件都是有一个关闭按钮的,如果禁止用户关闭,一定要加上这句话:// 用户无法去除该通知
notification.flags |= Notification.FLAG_NO_CLEAR;

    4.之后点击这个通知直接跳到应用程序主界面。

   大功告成了,继续努力吧。如有不妥的地方,欢迎指导!!!

   源代码索取可以联系我的。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值