设为首页 加入收藏

TOP

Android 软件的状态栏图标通知处理
2014-11-24 07:29:21 来源: 作者: 【 】 浏览:0
Tags:Android 软件 状态 图标 通知 处理

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


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


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


程序路径:org.anymobile.im


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


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


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


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


view plaincopy to clipboardprint
package org.anymobile.test;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.graphics.LightingColorFilter;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class TestActivity extends Activity
{
private static final int ADD_ID = 0;
private static final int DEL_ID = 1;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button = (Button) this.findViewById(R.id.btn_menu);
button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
// TestActivity.this.openOptionsMenu();
String packName = "org.anymobile.im";
String className = packName + ".LoginActivity";

Intent intent = new Intent();
ComponentName componentName = new ComponentName(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(0xFFFF0000, PorterDuff.Mode.MULTIPLY);
button.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000));
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
menu.add(0, ADD_ID, 0, "ADD");
menu.add(0, DEL_ID, 0, "DEL");

return super.onCreateOptionsMenu(menu);
}

}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android 离线用户的灰色头像处理 下一篇C++建立动态链表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·数据库:推荐几款 Re (2025-12-25 12:17:11)
·如何最简单、通俗地 (2025-12-25 12:17:09)
·什么是Redis?为什么 (2025-12-25 12:17:06)
·对于一个想入坑Linux (2025-12-25 11:49:07)
·Linux 怎么读? (2025-12-25 11:49:04)