Android notification非常使用,具体如下
1)效果图如下
1.进入系统获取如下界面

2. 选择"上海"通知栏显示如图

3.下拉通知栏获取如下图片

4.单机通知,跳转Activity获取如下效果图(注意通知栏中的通知消失了)

2)关键代码如下
1. 修改MainActivity.java代码如下
package com.example.androidapp;
import android.os.Bundle;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
public class MainActivity extends Activity {
private Spinner spinner1=null;
private NotificationManager notificationManager=null;
private String[] cities=new String[]{"北京","上海","深圳","广州","杭州","苏州"};
private ArrayAdapter<String> adapter=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/*初始化NotificationManager对象*/
notificationManager=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
/*
* 1)绑定Spinner
* 2)当选择别的选项(城市)触发事件
* */
spinner1=(Spinner)findViewById(R.id.spinner1);
adapter=new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item,cities);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
String textString=parent.getSelectedItem().toString();
setNotification(textString);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
/*发出Notification的方法*/
private void setNotification(String textString){
/* 1)创建新的Intent,当单机Notification时调用新的Activity
* 2)创建Bundle对象,并将要传递的数据传入
* 3)将Bundle对象分配给Intent
* 4)请注意,如果要以该Intent启动一个Activity,一定要设置 Intent.FLAG_ACTIVITY_NEW_TASK 标记。
* Intent.FLAG_ACTIVITY_CLEAR_TOP :如果在当前Task中,有要启动的Activity,
* 那么把该Acitivity之前的所有Activity都关掉,并把此Activity置前以避免创建Activity的实例
* Intent.FLAG_ACTIVITY_NEW_TASK :
* 系统会检查当前所有已创建的Task中是否有该要启动的Activity的Task,
* 若有,则在该Task上创建Activity,若没有则新建具有该Activity属性的Task,并在该新建的Task上创建Activity
* */
Intent intent=new Intent(MainActivity.this,TestActivity.class);
Bundle bundle =new Bundle();
bundle.putString("city", textString);
intent.putExtras(bundle);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);
/* PendingIntent 为Intent的包装,这里是启动Intent的描述,PendingIntent.getActivity 返回的PendingIntent表示,
* 此PendingIntent实例中的Intent是用于启动 Activity 的Intent。
* PendingIntent.getActivity的参数依次为:Context,发送者的请求码(可以填0),用于系统发送的Intent,标志位。
* 其中 PendingIntent.FLAG_UPDATE_CURRENT 表示如果该描述的PendingIntent已存在,
* 则改变已存在的PendingIntent的Extra数据为新的PendingIntent的Extra数据。
* */
PendingIntent pendingIntent=PendingIntent.getActivity(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
/* 1)创建Notification
* 2)icon 通知图标
* 3)tickerText 状态栏显示的通知文本提示
* 4)when 时间
* */
int icon=R.drawable.ic_launcher;
String tickerText=textString;
long when=System.currentTimeMillis();
Notification notification=new Notification(icon, tickerText, when);
/*当用户点击Clear之后,能够清除该通知*/
notification.flags=Notification.FLAG_AUTO_CANCEL;
/*设置显示在通知下拉框中的信息*/
notification.setLatestEventInfo(MainActivity.this, "所选城市", textString, pendingIntent);
/*启动Notification*/
notificationManager.notify(0, notification);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
2.创建Activity TestActivity.java具体代码如下
package com.example.androidapp;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.TextView;
import android.widget.Toast;
public class TestActivity extends Activity {
private TextView textView1=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
textView1=(TextView)findViewById(R.id.textView1);
/* 1) 获取Intent中的Bundle对象
* 2) 获取Bundle对象中的数据
* */
Bundle bundle=this.getIntent().getExtras();
String cityString=bundle.getString("city");
textView1.setText(cityString);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK) {
/*退出程序*/
this.finish();
}
return super.onKeyDown(keyCode, event);
}
}