Status Bar Notification 添加一个icon到系统状态栏中(可选择是否有文本信息),添加一段信息到Notification(通知栏)窗口中
当在后台运行的服务需要与用户进行交互时我们可以使用status bar notification
源码
MainActivity.java
package com.example1.examplestatusbar;
import android.net.sip.SipAudioCall.Listener;
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;
import android.widget.Toast;
public class MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button)findViewById(R.id.btnstartservice);
btn.setOnClickListener(listener);
}
//记住,如果没有复写onStart()中的内容的话,当你点击通知栏返回mainactivity后,status bar中的内容不会消失,如果熟悉activity生命周期的话就很容易理解这点
@Override
protected void onStart() {
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.cancel(R.layout.activity_main);
super.onStart();
}
private OnClickListener listener =new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(MainActivity.this,StatusService.class);
startService(intent);
}
};
}
StatusService.java
package com.example1.examplestatusbar;
import android.app.IntentService;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;
public class StatusService extends IntentService {
public StatusService() {
super("StatusService");
}
@Override
protected void onHandleIntent(Intent arg0) {
showNotification(false);
try {
Thread.sleep(10000);//模拟下载过程
showNotification(true);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private void showNotification(boolean finish) {
Intent intent = new Intent(this,MainActivity.class);
//理解不了,照着写就行。
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification notification = null;
if (!finish) {
notification = new Notification(R.drawable.ic_launcher, "开始下载", System.currentTimeMillis());
//第一个参数是引用图标的位置
notification.setLatestEventInfo(this, "下载", "正在下载中...", contentIntent);
}
else {
notification = new Notification(R.drawable.ic_launcher, "下载完毕", System.currentTimeMillis());
notification.setLatestEventInfo(this, "下载", "已经下载完毕...", contentIntent);
}
NotificationManager manager =(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
manager.notify(R.layout.activity_main,notification);
}
}