`
hunxiejun
  • 浏览: 1146485 次
文章分类
社区版块
存档分类
最新评论

Android 软件的状态栏图标通知处理

 
阅读更多

编写:徐建祥(netpirate@gmail.com)

日期:2010/11/22

网址:http://www.anymobile.org

QQ的状态栏通知机制:当所有QQ的UI Activity切换到后台后,添加状态通知;切换回来后,删除该状态通知。

飞信的状态栏通知方式:运行软件后,图标一直显示在状态栏的通知栏中;显示退出软件则删除该状态通知。

似乎QQ的更有点技术含量,多个程序切换到后台的处理而已;以飞信的模式,做个类似的测试,案例如下:

程序路径:org.anymobile.im

程序入口:org.anymobile.im.LoginActivity(Action:android.intent.action.MAIN;Category:android.intent.category.LAUNCHER)

主界面程序:org.anymobile.im.MainActivity

测试程序流程:未登录的情况下,或者第一次运行会打开LoginActivity程序;登陆后,一直停留在主界面MainActivity。

所以,通过Notification,需可以回到im项目的上一个界面程序,LoginActivity / MainActivity,这里就要参考Launcher应用的相关实现,Intent的flag设置。

测试代码,新建一个android项目,TestNotification,入口程序:TestActivity,代码如下:

  1. packageorg.anymobile.test;
  2. importandroid.app.Activity;
  3. importandroid.content.ComponentName;
  4. importandroid.content.Intent;
  5. importandroid.graphics.LightingColorFilter;
  6. importandroid.os.Bundle;
  7. importandroid.view.Menu;
  8. importandroid.view.View;
  9. importandroid.view.View.OnClickListener;
  10. importandroid.widget.Button;
  11. publicclassTestActivityextendsActivity
  12. {
  13. privatestaticfinalintADD_ID=0;
  14. privatestaticfinalintDEL_ID=1;
  15. /**Calledwhentheactivityisfirstcreated.*/
  16. @Override
  17. publicvoidonCreate(BundlesavedInstanceState)
  18. {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. Buttonbutton=(Button)this.findViewById(R.id.btn_menu);
  22. button.setOnClickListener(newOnClickListener()
  23. {
  24. publicvoidonClick(Viewv)
  25. {
  26. //TestActivity.this.openOptionsMenu();
  27. StringpackName="org.anymobile.im";
  28. StringclassName=packName+".LoginActivity";
  29. Intentintent=newIntent();
  30. ComponentNamecomponentName=newComponentName(packName,className);
  31. intent.setComponent(componentName);
  32. intent.setAction("android.intent.action.MAIN");
  33. intent.addCategory("android.intent.category.LAUNCHER");
  34. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  35. intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
  36. TestActivity.this.startActivity(intent);
  37. }
  38. });
  39. //button.getBackground().setColorFilter(0xFFFF0000,PorterDuff.Mode.MULTIPLY);
  40. button.getBackground().setColorFilter(newLightingColorFilter(0xFFFFFFFF,0xFFAA0000));
  41. }
  42. @Override
  43. publicbooleanonCreateOptionsMenu(Menumenu)
  44. {
  45. menu.add(0,ADD_ID,0,"ADD");
  46. menu.add(0,DEL_ID,0,"DEL");
  47. returnsuper.onCreateOptionsMenu(menu);
  48. }
  49. }

OK,开始测试状态栏的通知功能:

1、LoginActivity.onCreate() 调用showNotification()方法,创建一个通知图标;

  1. /**
  2. *Thenotificationistheiconandassociatedexpandedentryinthe
  3. *statusbar.
  4. */
  5. protectedvoidshowNotification()
  6. {
  7. CharSequencefrom="IM";
  8. CharSequencemessage="IMstartup";
  9. Intentintent=newIntent();
  10. ComponentNamecomponentName=newComponentName("com.longcheer.imm",
  11. "com.longcheer.imm.activitys.LoginActivity");
  12. intent.setComponent(componentName);
  13. intent.setAction("android.intent.action.MAIN");
  14. intent.addCategory("android.intent.category.LAUNCHER");
  15. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  16. intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
  17. //ThePendingIntenttolaunchouractivityiftheuserselectsthisnotification
  18. PendingIntentcontentIntent=PendingIntent.getActivity(this,0,intent,0);
  19. //constructtheNotificationobject.
  20. Notificationnotif=newNotification(R.drawable.icon,"IMMStillrunbackground!",
  21. System.currentTimeMillis());
  22. notif.setLatestEventInfo(this,from,message,contentIntent);
  23. //lookupthenotificationmanagerservice
  24. NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
  25. nm.notify(R.string.app_name,notif);
  26. }

2、在LoginActivity / MainAcitivity的退出操作中cancel该通知。

  1. privatevoiddoExit()
  2. {
  3. this.finish();
  4. NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
  5. nm.cancel(R.string.app_name);
  6. }

测试OK!!

分享到:
评论

相关推荐

    Android高级应用源码-状态栏通知小图标,notification通知.zip

    Android高级应用源码-状态栏通知小图标,notification通知.zip

    Android代码-状态栏通知小图标notification通知.rar

    状态栏通知小图标notification通知.rar

    状态栏通知小图标,notification通知

    此demo为状态栏通知小图标,notification通知,代码较为简单,可供参考

    安卓消息推送通知栏相关-状态栏通知小图标notification通知.rar

    状态栏通知小图标,notification通知.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    Android 8.1隐藏状态栏图标的实例代码

    状态栏图标的布局文件在frameworks\base\packages\SystemUI\res\layout\status_bar.xml,主要包括通知,定位,蓝牙,信号,时间,电池等图标,只要在相应的布局文件中加入属性android:visibility=invisible 或者...

    Android 8.1隐藏状态栏图标

    状态栏图标的布局文件在frameworks\base\packages\SystemUI\res\layout\status_bar.xml,主要包括通知,定位,蓝牙,信号,时间,电池等图标,只要在相应的布局文件中加入属性android:visibility=”invisible” 或者...

    Android的通知栏多版本适配

    Andoid解决通知栏图标显示小黑块以及 8.0以上版本的适配和多个版本的通知栏开启状态判断。

    Android通知(状态栏/最小化)

    Android下实现类似Windows最小化操作。 点击按钮,Activity收入状态栏,显示小图标。 打开状态栏,可点击图标唤起Activity,小图标消失。 需使用Service类的知识。

    Android通知(状态栏/最小化)

    Android下实现类似Windows最小化操作。 点击按钮,Activity收入状态栏,显示小图标。 打开状态栏,可点击图标唤起Activity,小图标消失。 需使用Service类的知识。

    android开发修改状态栏背景色和图标颜色的示例

    本文介绍了android开发修改...2、写修改状态栏图标的颜色(暂时只知道黑色和白色) public class StatusBarUtil { /** * 修改状态栏为全透明 * @param activity */ @TargetApi(19) public static void transpare

    Android开发之Notification手机状态栏通知用法实例分析

    本文实例讲述了Android开发之Notification手机状态栏通知用法。分享给大家供大家参考,具体如下: 简介: 通知是显示在手机状态栏的通知(PS:就是手机上方,显示时间啥的那一栏) 用法: Notification添加了Builder...

    android通知入门小例子

    通知(Notification)是 ...条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详 细内容。 使用:当程序进入到后台的时候我们才需要使用通知,所以在广播接收器和服务中使用通知较多。

    Android开发之使用通知栏显示提醒信息的方法

    本文实例讲述了Android开发之使用通知栏显示提醒信息的方法。分享给大家供大家参考,具体... //初始化通知对象 p1:通知的图标 p2:通知的状态栏显示的提示 p3:通知显示的时间 Notification notification = new Notifica

    Android不使用自定义布局情况下实现自定义通知栏图标的方法

    本文实例讲述了Android不使用自定义布局情况下实现自定义通知栏图标的方法。分享给大家供大家参考,具体如下: 自定义通知栏图标?不是很简单么。自定义布局都不在话下! 是的,有xml布局文件当然一切都很简单,如果...

    APK Image Extractor 2.0老朽痴拙汉化版(Akp图标提取)

    所有按钮、 启动器图标,操作栏图标、 通知和状态栏图标, 菜单图标、 对话框和列表视图图标、 上下文图标 可以在按钮的单击提取徽标、 启动屏幕和背景。 (可先装原版再用汉化版复盖) 试用限制︰ nag 屏幕.30天

    Android_UI设计指南.pdf

    状态栏图标用于应用程序在状态栏中的通知。 Tab图标 Tab 图标用来表示在一个多选项卡界面的各个选项的图形元素。 对话框图标 对话框图标是在弹出框中显示,增加互动性。 列表视图图标 使用列表视图图标是用图形表示...

    Android仿QQ在状态栏显示登录状态效果

    过一段时间后该通知消失,同时在状态栏上显示代表该登录状态的图标(如图) 将状态栏下拉可以看到状态的详细信息(如图) 单击”更改登录状态”按钮,将显示通知列表。单击”退出”按钮,可以删除该通知。 具体实现...

    Internet Speed Meter Pro 1.4.10.apk

    互联网速度计破解APK Internet Speed Meter在状态栏中显示您的Internet速度,并...可选择蓝色或白色状态栏图标。(仅适用于KitKat及以下版本的Android) 上传和下载速度 选项以在单独的通知中显示上传和下载速度。

    android downlaod manager下载管理器

    功能完整强大的android下载管理器, 支持多任务管理,断点续传,暂停下载, 下载任务图标设置,状态栏通知(进度条),媲美国内知名软件市场hiapk,360手机助手等内置的下载管理器。

Global site tag (gtag.js) - Google Analytics