手机有未接来电或未读短信时在通知栏就可以有一个状态,下拉后点击相应条目就可以进入此条目,同时通知栏上的此条信息消失,其实实现起来并不难,通过一个notification和notificationmanager即可
我下面一个activity和一个intentservice实现,模拟下载程序:
源码如下:
package com.example.activity;
import com.example.service.IntentServiceDemo;
import android.os.Bundle;
import android.app.Activity;
import android.app.NotificationManager;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class Main extends Activity {
   @Override
	protected void onStart()
	{
		//点击bar跳转后bar消失,由于oncreate只有在创建时才条用故放在此方法中
		super.onStart();
		NotificationManager manager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
		manager.cancel(R.layout.main);
		
		
	}
Button btn;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       btn=(Button)findViewById(R.id.btn);
       btn.setOnClickListener(new OnClickListener()
	{
		
		@Override
		public void onClick(View v)
		{//点击按钮跳转至service,记得要在manifest文件中声明一下
			Intent intent=new Intent(Main.this,IntentServiceDemo.class);
			startService(intent);
		}
	});   
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
}
点击按钮触发intentservice服务,
注意到通知栏出现开始下载条目,5s过后下载完毕
返回主菜单拉下通知栏
点击条目可以来到main,同时通知栏中的条目消失
========================================
package com.example.service;
import com.example.activity.*;
import android.app.IntentService;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.util.Log;
public class IntentServiceDemo extends IntentService
{
//需要一个空的构造方法,继承父类的名字
	public IntentServiceDemo()
	{
		super("IntentServiceDemo");
	}
@Override
//重写onhandleintent方法
	protected void onHandleIntent(Intent intent)
	{
		Log.i("TAG","开始下载");
//调用此函数 激发下载进程
		showNotification(true);
		try
		{
//进程休眠5s,模拟下载过程
			Thread.sleep(5000);
		} catch (InterruptedException e)
		{
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
//下载完毕,再次调用
		showNotification(false);
		Log.i("TAG","下载完毕");
}
	private void showNotification(boolean b)
	{
		Notification notification;//声明一个notification
		Intent intent=new Intent(this,Main.class);
//pendingintent中封装了intent,跳转到Main
		PendingIntent contentIntent=PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
		NotificationManager nm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);//获取一个notificationmanager 
		if (b)//如果b为真表示还未下载成功开始下载
		{//三个参数分别为图标、标题、开始时间
			notification=new Notification(R.drawable.ok, "开始下载", System.currentTimeMillis());
//下拉通知栏后显示的信息,点击后执行contentintent
			notification.setLatestEventInfo(this, "下载", "正在下载…", contentIntent);//用户点击时运行contentintent
		}else//否则为假 表示下载完毕
		{
			notification=new Notification(R.drawable.ok, "下载完毕", System.currentTimeMillis());
			notification.setLatestEventInfo(this, "下载", "下载完毕!", contentIntent);
//可以指定通知的方式,如铃声、震动、LED彩灯等
			//notification.defaults=Notification.DEFAULT_LIGHTS;
			//notification.defaults=Notification.DEFAULT_SOUND;
		}
//下载完毕后通知,参数为一个id(唯一),这里可以指定为R.layout.main,但前后要保持一致;另一个用来指定notification
		nm.notify(R.layout.main, notification);//id唯一的
	}
}
                    
                
                
            
        
浙公网安备 33010602011771号