您的位置:首页 > 移动开发 > Android开发

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

2013-11-19 19:16 555 查看
      标题有点乱,最近在做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.之后点击这个通知直接跳到应用程序主界面。

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

   源代码索取可以联系我的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 通知栏
相关文章推荐