模仿QQ按下返回键,程序后台运行,点击通知使其重新运行的应用
2013-11-19 19:16
555 查看
标题有点乱,最近在做android的毕业设计,题目是个人备忘录。废话不多说,一开始我是想实现这样的应用:用户双击两次返回键进行程序的退出,同时又发出通知:该备忘录正在后台运行,以后用户点击该通知就可以直接进入该应用主界面。(其实就是模仿qq的界面,而且该通知用户是不可以直接关掉的。
1.主界面代码:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201311/19/222c4eeb6cfa0ccff053296f600f8fda)
界面的代码很简单,就不贴出来了,如果想要源代码我可以发给你的。
3.用户点击返回键时,发出通知,结果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201311/19/471a5d849e016b2b7042bc5adeaa5a31)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201311/19/8b5604058eedd1064a91973930ddbb30)
上述通知大部分软件都是有一个关闭按钮的,如果禁止用户关闭,一定要加上这句话:// 用户无法去除该通知
notification.flags |= Notification.FLAG_NO_CLEAR;
4.之后点击这个通知直接跳到应用程序主界面。
大功告成了,继续努力吧。如有不妥的地方,欢迎指导!!!
源代码索取可以联系我的。
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.之后点击这个通知直接跳到应用程序主界面。
大功告成了,继续努力吧。如有不妥的地方,欢迎指导!!!
源代码索取可以联系我的。
相关文章推荐
- 解决home键把程序隐藏到后台后,再次点击应用会重新打开MainActivity问题
- Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式
- 防止点击Home健后App在后台运行,点击应用桌面图标重新启动程序的办法
- Android通知之通知栏点击通知后返回正在运行的程序,而不是一个新Activity
- 点击返回键,将应用退至后台运行
- Android点击通知栏信息后返回正在运行的程序,而不是一个新Activity
- Android程序 类QQ通知常驻在Notification栏 点击Notification正确回调到之前已经放置在后台的Task中的对应Activity,而不是创建它的一个新实例
- 【Android】仿QQ功能点击通知栏返回应用,非启动一个新Activity
- Android程序 类QQ通知常驻在Notification栏 点击Notification正确回调到之前已经放置在后台的Task中的对应Activity,而不是创建它的一个新实例
- android开发之让Android点击通知栏信息后返回正在运行的程序
- Android按返回键程序仍在后台运行,并未完全退出和销毁,类似微信QQ等退出方式的实现-- moveTaskToBack
- Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式
- Android程序 类QQ通知常驻在Notification栏 点击Notification正确回调到之前已经放置在后台的Task中的对应Activity,而不是创建它的一个新实例
- Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式
- Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式
- android开发之Intent.setFlags()_让Android点击通知栏信息后返回正在运行的程序
- Android按返回键退出程序但不销毁,程序后台运行,同QQ退出处理方式
- 按返回键退出程序但不销毁代码,像QQ一样,后台运行
- Android 应用home键,来电或者其他方式进入后台运行,再次进入程序需要重新登录问题
- android服务里生成通知点击后返回正在运行的程序和当前的Activity