Notification的使用
代码下载链接:http://download.csdn.net/detail/u011324501/9295057
方法1:
public void notifi(){
NotificationManager nm = (NotificationManager) getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
// Intent intent = new Intent(this, MainActivity.class);
// PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, 0);
//新建一个notification实例
Notification.Builder builder = new Notification.Builder(
getApplicationContext());
// builder.setContentIntent(pIntent);
builder.setSmallIcon(R.drawable.fsad);//设置小标题
//获取自定义布局
RemoteViews remoteView = new RemoteViews(getPackageName(),
R.layout.notification);
//获取布局id
remoteView.setImageViewResource(R.id.image, R.drawable.fsad);
remoteView.setTextViewText(R.id.title, "USB storage connected");
remoteView.setTextViewText(R.id.content, "Click to FileManager");
remoteView.setTextViewText(R.id.btn,"Remove");
//Intent active = new Intent(this, MyReceiver.class);
Intent active = new Intent("com.aaa");//发送广播
// MainActivity.this.sendBroadcast(intent);
// active.setAction(ACTION_NOTIFY_BUTTON);
PendingIntent pintent2 = PendingIntent.getBroadcast(this, 0, active, 0);
//给广播添加监听器
remoteView.setOnClickPendingIntent(R.id.btn, pintent2);
Notification notification = builder.build();
notification.contentView = remoteView;
nm.notify(1000, notification);
// NotificationManager manger = (NotificationManager)this.getSystemService(NOTIFICATION_SERVICE);
// manger.cancel(1000);//取消notification
}
方法2:
public void notification(){
int icon = R.drawable.ic_launcher;
CharSequence tickerText = "Notification01";
long when = System.currentTimeMillis();
Notification notification = new Notification(icon,tickerText,when);
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification);
contentView.setImageViewResource(R.id.image, R.drawable.fsad);
contentView.setTextViewText(R.id.title, "USB storage connected");
contentView.setTextViewText(R.id.content, "Click to FileManager");
// contentView.setTextViewText(R.id.btn,"btn");
contentView.setCharSequence(R.id.btn, "setText", "remove");
Intent active = new Intent("com.aaa");
// notification.contentView = contentView;
notification.bigContentView =contentView;
PendingIntent pintent2 = PendingIntent.getBroadcast(getApplication(), 0, active,0);
contentView.setOnClickPendingIntent(R.id.btn,pintent2);
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);
mNotificationManager.notify(1000, notification);
}
方法3:
可以自定义notification的高度
public void no(){
//大图标
Bitmap btm = BitmapFactory.decodeResource(getResources(),
R.drawable.ic_launcher);
//Intent intent = new Intent(MainActivity.this, ResultActivity.class);
Intent active = new Intent("com.aaa");
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, active,0);
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification);
contentView.setCharSequence(R.id.btn,"setText", "Remove");
Notification noti = new NotificationCompat.Builder(MainActivity.this)
.setSmallIcon(R.drawable.ic_launcher)//小标题
.setLargeIcon(btm)//大标题
.setNumber(13)
.setContentIntent(pendingIntent)
.setStyle(
new NotificationCompat.InboxStyle()
.addLine("Click to FileManager") .setBigContentTitle("USB storage connected") .setSummaryText("Remove"))
.build();
RemoteViews remoteView = new RemoteViews(getPackageName(),R.layout.notification);
remoteView.setImageViewResource(R.id.image, R.drawable.fsad);
remoteView.setTextViewText(R.id.title, "USB storage connected");
remoteView.setTextViewText(R.id.content, "Click to FileManager");
remoteView.setTextViewText(R.id.btn,"Remove");
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1000, noti);
}
方法4:
可自定义notification自定义高度
public void nn(){
Notification foregroundNote;
RemoteViews contentView = new RemoteViews(this.getPackageName(),
R.layout.notification);
contentView.setImageViewResource(R.id.image, R.drawable.fsad);
contentView.setTextViewText(R.id.title, "USB storage connected");
contentView.setTextViewText(R.id.content, "Click to FileManager");
contentView.setTextViewText(R.id.btn, "REMOVE");
Notification.Builder mNotifyBuilder = new Notification.Builder(this);
foregroundNote = mNotifyBuilder.setContentTitle("USB storage connected")//一级标题
.setContentText("Click to FileManager")//二级标题
.setSmallIcon(R.drawable.fsad)
// .setLargeIcon(btm)//大图标
.build();
Intent active = new Intent("com.aaa");
foregroundNote.bigContentView = contentView;
PendingIntent pintent = PendingIntent.getBroadcast(getApplication(), 0, active,0);
contentView.setOnClickPendingIntent(R.id.btn,pintent);
NotificationManager m = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
m.notify(1000, foregroundNote);
}
移除notification方法:
public void removenm(){
NotificationManager nm = (NotificationManager) getApplicationContext()
.getSystemService(Context.NOTIFICATION_SERVICE);
nm.cancel(1000);
}
接收发送出来的广播:
public static class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
// 实例化Intent
if(intent.getAction().equals("com.aaa")){
data();
Toast.makeText(context, "receiver", Toast.LENGTH_SHORT).show();
}
}
}<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>
Main.xml布局代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
/>
<Button
android:id="@+id/remove"
android:layout_below="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</RelativeLayout>
自定义notification布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:background="#ffffff"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image"
android:layout_marginTop="10dip"
android:layout_width="50dip"
android:layout_marginLeft="8dip"
android:layout_alignParentLeft="true"
android:layout_height="40dip"/>
<LinearLayout
android:id="@+id/linearlayout"
android:layout_marginTop="7dip"
android:layout_marginLeft="5dip"
android:layout_toRightOf="@+id/image"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/title"
android:textColor="#000000"
android:textSize="16sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView android:id="@+id/content"
android:textColor="#999999"
android:textSize="14sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<TextView
android:id="@+id/view"
android:layout_below="@+id/linearlayout"
android:layout_marginTop="10dip"
android:layout_marginLeft="60dip"
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="#999999" />
<TextView
android:id="@+id/btn"
android:layout_marginTop="6dip"
android:background="#ffffff"
android:textSize="18sp"
android:layout_marginLeft="60dip"
android:layout_width="wrap_content"
android:layout_height="40dip"
android:layout_below="@+id/view"
android:textColor="#999999"
android:layout_marginRight="10dp" />
</RelativeLayout>
广播的注册:
//接收广播在MainActivity里面
<receiver android:name="com.example.boradcastreceiver.MainActivity$MyReceiver">
<intent-filter>
<action android:name="com.aaa"/>
</intent-filter>
</receiver>
//直接是广播一个文件
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="com.noti"/>
</intent-filter>
</receiver>