编写:徐建祥(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,代码如下:
-
packageorg.anymobile.test;
-
importandroid.app.Activity;
-
importandroid.content.ComponentName;
-
importandroid.content.Intent;
-
importandroid.graphics.LightingColorFilter;
-
importandroid.os.Bundle;
-
importandroid.view.Menu;
-
importandroid.view.View;
-
importandroid.view.View.OnClickListener;
-
importandroid.widget.Button;
-
publicclassTestActivityextendsActivity
-
{
-
privatestaticfinalintADD_ID=0;
-
privatestaticfinalintDEL_ID=1;
-
-
-
@Override
-
publicvoidonCreate(BundlesavedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.main);
-
-
Buttonbutton=(Button)this.findViewById(R.id.btn_menu);
-
button.setOnClickListener(newOnClickListener()
-
{
-
publicvoidonClick(Viewv)
-
{
-
-
StringpackName="org.anymobile.im";
-
StringclassName=packName+".LoginActivity";
-
-
Intentintent=newIntent();
-
ComponentNamecomponentName=newComponentName(packName,className);
-
intent.setComponent(componentName);
-
-
intent.setAction("android.intent.action.MAIN");
-
intent.addCategory("android.intent.category.LAUNCHER");
-
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-
-
TestActivity.this.startActivity(intent);
-
}
-
});
-
-
button.getBackground().setColorFilter(newLightingColorFilter(0xFFFFFFFF,0xFFAA0000));
-
}
-
@Override
-
publicbooleanonCreateOptionsMenu(Menumenu)
-
{
-
menu.add(0,ADD_ID,0,"ADD");
-
menu.add(0,DEL_ID,0,"DEL");
-
-
returnsuper.onCreateOptionsMenu(menu);
-
}
-
-
}
OK,开始测试状态栏的通知功能:
1、LoginActivity.onCreate() 调用showNotification()方法,创建一个通知图标;
-
-
-
-
-
protectedvoidshowNotification()
-
{
-
CharSequencefrom="IM";
-
CharSequencemessage="IMstartup";
-
-
Intentintent=newIntent();
-
ComponentNamecomponentName=newComponentName("com.longcheer.imm",
-
"com.longcheer.imm.activitys.LoginActivity");
-
intent.setComponent(componentName);
-
intent.setAction("android.intent.action.MAIN");
-
intent.addCategory("android.intent.category.LAUNCHER");
-
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-
intent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
-
-
-
PendingIntentcontentIntent=PendingIntent.getActivity(this,0,intent,0);
-
-
Notificationnotif=newNotification(R.drawable.icon,"IMMStillrunbackground!",
-
System.currentTimeMillis());
-
notif.setLatestEventInfo(this,from,message,contentIntent);
-
-
-
NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
-
nm.notify(R.string.app_name,notif);
-
}
2、在LoginActivity / MainAcitivity的退出操作中cancel该通知。
-
privatevoiddoExit()
-
{
-
this.finish();
-
NotificationManagernm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
-
nm.cancel(R.string.app_name);
-
}
测试OK!!
分享到:
相关推荐
Android高级应用源码-状态栏通知小图标,notification通知.zip
状态栏通知小图标notification通知.rar
此demo为状态栏通知小图标,notification通知,代码较为简单,可供参考
状态栏通知小图标,notification通知.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
状态栏图标的布局文件在frameworks\base\packages\SystemUI\res\layout\status_bar.xml,主要包括通知,定位,蓝牙,信号,时间,电池等图标,只要在相应的布局文件中加入属性android:visibility=invisible 或者...
状态栏图标的布局文件在frameworks\base\packages\SystemUI\res\layout\status_bar.xml,主要包括通知,定位,蓝牙,信号,时间,电池等图标,只要在相应的布局文件中加入属性android:visibility=”invisible” 或者...
Andoid解决通知栏图标显示小黑块以及 8.0以上版本的适配和多个版本的通知栏开启状态判断。
Android下实现类似Windows最小化操作。 点击按钮,Activity收入状态栏,显示小图标。 打开状态栏,可点击图标唤起Activity,小图标消失。 需使用Service类的知识。
Android下实现类似Windows最小化操作。 点击按钮,Activity收入状态栏,显示小图标。 打开状态栏,可点击图标唤起Activity,小图标消失。 需使用Service类的知识。
本文介绍了android开发修改...2、写修改状态栏图标的颜色(暂时只知道黑色和白色) public class StatusBarUtil { /** * 修改状态栏为全透明 * @param activity */ @TargetApi(19) public static void transpare
本文实例讲述了Android开发之Notification手机状态栏通知用法。分享给大家供大家参考,具体如下: 简介: 通知是显示在手机状态栏的通知(PS:就是手机上方,显示时间啥的那一栏) 用法: Notification添加了Builder...
通知(Notification)是 ...条通知后,手机最上方的状态栏中会显示一个通知的图标,下拉状态栏后可以看到通知的详 细内容。 使用:当程序进入到后台的时候我们才需要使用通知,所以在广播接收器和服务中使用通知较多。
本文实例讲述了Android开发之使用通知栏显示提醒信息的方法。分享给大家供大家参考,具体... //初始化通知对象 p1:通知的图标 p2:通知的状态栏显示的提示 p3:通知显示的时间 Notification notification = new Notifica
本文实例讲述了Android不使用自定义布局情况下实现自定义通知栏图标的方法。分享给大家供大家参考,具体如下: 自定义通知栏图标?不是很简单么。自定义布局都不在话下! 是的,有xml布局文件当然一切都很简单,如果...
所有按钮、 启动器图标,操作栏图标、 通知和状态栏图标, 菜单图标、 对话框和列表视图图标、 上下文图标 可以在按钮的单击提取徽标、 启动屏幕和背景。 (可先装原版再用汉化版复盖) 试用限制︰ nag 屏幕.30天
状态栏图标用于应用程序在状态栏中的通知。 Tab图标 Tab 图标用来表示在一个多选项卡界面的各个选项的图形元素。 对话框图标 对话框图标是在弹出框中显示,增加互动性。 列表视图图标 使用列表视图图标是用图形表示...
过一段时间后该通知消失,同时在状态栏上显示代表该登录状态的图标(如图) 将状态栏下拉可以看到状态的详细信息(如图) 单击”更改登录状态”按钮,将显示通知列表。单击”退出”按钮,可以删除该通知。 具体实现...
互联网速度计破解APK Internet Speed Meter在状态栏中显示您的Internet速度,并...可选择蓝色或白色状态栏图标。(仅适用于KitKat及以下版本的Android) 上传和下载速度 选项以在单独的通知中显示上传和下载速度。
功能完整强大的android下载管理器, 支持多任务管理,断点续传,暂停下载, 下载任务图标设置,状态栏通知(进度条),媲美国内知名软件市场hiapk,360手机助手等内置的下载管理器。