标题有点乱,最近在做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.之后点击这个通知直接跳到应用程序主界面。
大功告成了,继续努力吧。如有不妥的地方,欢迎指导!!!
源代码索取可以联系我的。