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>