通知(二)你可能不知道的Notification用法
来源:互联网 发布:淘宝付款被挤爆了 编辑:程序博客网 时间:2024/06/07 16:02
这里是通知的其中一种,Notification。常用的和自定义的
Notificaton不会打断Activity的运行
显示在状态栏或通知的窗体中,可以有一些警告的设置,如播放声音、闪光灯
应包含图片、标题消息(自定义通知可不用)、最后用一个PendingIntent告知通知来自哪里(Activity、Broadcase、Service)
可选项可包含文本说明、警告声音、振动、LED闪光灯
几个构造函数:
Notification()
Notification(int icon,CharSequence tickerText, long when)
第三个参数是时间域中显示的时间,不是通知产生时间
Notification(Parcel parcel)
<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="com.example.statusnotification.MainActivity" > <Button android:id="@+id/button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="65dp" android:text="普通通知的使用" /> <Button android:id="@+id/button2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="自定义通知的使用" /></RelativeLayout>自定义通知用到的布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/imageView1" android:layout_width="50dp" android:layout_height="50dp" android:layout_alignParentLeft="true" android:layout_marginLeft="30dp" android:src="@drawable/notify" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/imageView1" android:text="TextView1" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/imageView1" android:layout_below="@id/textView1" android:text="TextView2" /></RelativeLayout>
package com.example.statusnotification;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.RemoteViews;public class MainActivity extends Activity {private Button button1;private NotificationManager notificationManager;//通知的管理类private Notification.Builder builder;private Button button2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button1 = (Button) findViewById(R.id.button1);button2 = (Button) findViewById(R.id.button2);//用getSystemService实例化通知notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);builder = new Notification.Builder(MainActivity.this);button1.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent = new Intent(MainActivity.this,MainActivity.class);PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);builder.setContentIntent(pendingIntent);builder.setContentTitle("通知提示");builder.setContentText("明天放假,今天提前下班");builder.setSmallIcon(R.drawable.notify);builder.setTicker("有新通知");//第一次来通知的时候能看见builder.setDefaults(Notification.DEFAULT_ALL);/*DEFAULT_ALL全部默认 *DEFAULT_LIGHTS默认闪光 *DEFAULT_SOUND默认的铃声 *DEFAULT_VIBRATE默认振动 * 可通过指定Notification的不同参数设置默认的闪光、声音、振动 * 最后不要在AndroidManifest.xml里忘了授权 * */Uri uri = Uri.parse("file:///mnt/sdcard/Music/audio.mp3");builder.setSound(uri);Notification notification = builder.build();//仅限在Android4.1以上使用,较低版本直接 new Notification//低版本使用notification.defaults = Notification.DEFAULT_SOUND/* * 第一个参数:标识符id * 第二个参数:Notification *///long[] vibrates = { 10, 20, 30};//notification.vibrate = vibrates;//通过一个数组设置振动的时间notificationManager.notify(88, notification);}});button2.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {//自定义的通知一定要用RemoteViewsRemoteViews view = new RemoteViews(getPackageName(), R.layout.custom_notification);view.setImageViewResource(R.id.imageView1, R.drawable.notify);view.setTextViewText(R.id.textView1, "通知");view.setTextViewText(R.id.textView2, "今晚一起聚餐");Intent intent = new Intent(MainActivity.this, MainActivity.class);PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);builder.setContentIntent(pendingIntent);builder.setContent(view); //这里别忘了指定它的布局Notification notification = builder.build();notificationManager.notify(89, notification);}});}}工程可设置自定义通知的铃声,mp3文件放在SDCard中。高版本路径可能有所不同sdcard目录在mnt目录下,这里放的mp3文件是audio.mp3
运行结果
源代码下载
先点击普通通知按钮再点击自定义的通知按钮,结果如预期一样。但如果先点击自定义的通知按钮再点击普通通知按钮,出来的通知都是自定义通知的布局和内容。??难道是线程的问题??
今天发现eclipse也有很奇葩的时候,注释里有个"Android4.1""new Notification"也能给我报错,一定要clean才行
0 0
- 通知(二)你可能不知道的Notification用法
- 通知(一)你可能不知道的Toast用法
- 你可能不知道的
- C++ std::string --- 你可能不知道的一些用法
- C++ STL 算法 --- 你可能不知道的一些用法
- C++ std::string --- 你可能不知道的一些用法
- C++ STL 算法 --- 你可能不知道的一些用法
- C++ std::string --- 你可能不知道的一些用法
- C++ std::string --- 你可能不知道的一些用法
- C++ std::string --- 你可能不知道的一些用法
- C++ std::string --- 你可能不知道的一些用法
- C++ std::string --- 你可能不知道的一些用法
- JS中的函数(二):函数参数(你可能不知道的参数传递)
- JS中的函数(二):函数参数(你可能不知道的参数传递)
- JS中的函数(二):函数参数(你可能不知道的参数传递)
- 你可能不知道的Java基础知识(一)
- 你可能不知道的事(服务器返回 id)
- 可能你不知道的内存泄漏
- 远程连接内网中的Windows主机中的linux虚拟机
- 【构造】 URAL 1495 One-two, One-two 2
- POJ 3678 Katu Puzzle(2-sat 模板题)
- Fastjson技术内幕
- [深入浅出Cocoa]详解键值观察(KVO)及其实现机理
- 通知(二)你可能不知道的Notification用法
- 考研数据结构与算法之排序专题一 快速排序
- 《C++Primer》中作者讲述案例使用的Sales_item.h文件
- 用Linq将成绩按不同分数段进行分组
- 判断运算是否越界
- Chrome源码剖析、上--多线程模型、进程通信、进程模型
- 宏观把控C++
- 从平安wifi短信验证码被扯蛋说起-也谈产品经理
- 【pythonchallenge】【问题0】