public void onPostDirect(View v) {
// 直接跳转activity,启动intent中的activity的时候直接吧activity作为一个任务推倒app中activity的栈顶;
// 点击返回的时候会跳到栈的另外一个activity;
// 1提醒框的view设置
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
this);
mBuilder.setTicker("post notification");
mBuilder.setContentTitle("提示信息,你有短信也");
mBuilder.setContentText("今天吃了吗");
mBuilder.setSmallIcon(android.R.drawable.stat_notify_chat);
mBuilder.setContentInfo("牛X");
mBuilder.setAutoCancel(true);
// 2点击消息提醒框后,直接跳转intent目标activit
Intent intent = new Intent(this, ContentViewActivity.class);
intent.putExtra(ContentViewActivity.EXTRA_TEXT, "from Notification");
// 3建立一个任务栈,通过addparentStack把后台推栈添加到栈中,
// 虽然添加了一个目标activity,但是并没有添加intent,用addNextIntent
// 添加intent到栈顶
TaskStackBuilder mTask = TaskStackBuilder.create(this);
mTask.addParentStack(ContentViewActivity.class);
mTask.addNextIntent(intent);
// 4用一个PendingIntent包装Intent;
PendingIntent mPendingIntent = mTask.getPendingIntent(0,
PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(mPendingIntent);
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify("direct_tag", R.id.direct_notification, mBuilder.build());
}
public void onPostInterstitial(View v) {
// 不直接启动activity,启动activity的时候吧activity作为一个新任务放置到一个新的栈中
// 点击返回的时候跟直接跳至桌面;跟home键的效果一样
// 提醒框view的设置
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
this);
mBuilder.setTicker("Interstitial notification");
mBuilder.setSmallIcon(android.R.drawable.stat_notify_chat);
mBuilder.setContentTitle("Interstitial Notification");
mBuilder.setContentText("This will show a detial page");
mBuilder.setAutoCancel(true);
// 2创建一个新栈加载intent中的activity
Intent intent = new Intent(this, InterstitialMessageActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
// 用getActivity的方法获取PendingIntent
PendingIntent mPendingIntent = PendingIntent.getActivity(this, 0,
intent, 0);
mBuilder.setContentIntent(mPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.notify("interstitial_tag",
R.id.interstitial_notification, mBuilder.build());
}
public void onPostBigView(View v) {
//建立一个比正常大的消息提醒框正常的是64dp,大的是256dp
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
this);
mBuilder.setSmallIcon(android.R.drawable.stat_notify_chat);
mBuilder.setTicker("big notification");
mBuilder.setContentTitle("BigView");
mBuilder.setContentText("一个很大的消息提醒框");
// 利用InboxStyle设置一个样式
//添加style中的文字
//吧样式添加到mbuilder中
NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
String[] events = new String[] { "first line", "second line",
"third line", "fourth line" };
inboxStyle.setBigContentTitle("换大的了");
for (int i = 0; i < events.length; i++) {
inboxStyle.addLine(events[i]);
}
mBuilder.setStyle(inboxStyle);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.notify("big_view", R.id.interstitial_notification,
mBuilder.build());
}
public void onPostProgressView(View v) {
//创建一个带进度条的消息提醒框
final NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
final NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
this);
mBuilder.setSmallIcon(android.R.drawable.stat_notify_chat);
mBuilder.setTicker("progress notification");
mBuilder.setContentTitle("Progress");
mBuilder.setContentText("显示进度的消息提醒框");
//用线程加载进度
new Thread() {
public void run() {
int i;
for (i = 0; i < 100; i += 5) {
//mBuilder添加进度条
mBuilder.setProgress(100, i, false);
mNotificationManager.notify(0, mBuilder.build());
try {
Thread.sleep(5 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//结束后调整进度条状态
mBuilder.setContentText("Download complete")
.setProgress(0, 0, false);
mNotificationManager.notify(0, mBuilder.build());
};
}.start();
}
public void onPostMyView(View v){
//一个自定义的消息提醒框
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
this);
//用remoteViews加载自动以的布局
RemoteViews mRemoteViews=new RemoteViews(getPackageName(), R.layout.myview);
mBuilder.setTicker("my Notifiction");
//经过测试发现若是没有setSmallIcon这个设置不会显示提醒框
//原因未知
mBuilder.setSmallIcon(android.R.drawable.stat_notify_chat);
mBuilder.setContent(mRemoteViews);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
mNotificationManager.notify("big_view", R.id.interstitial_notification,
mBuilder.build());
}
android Notification的例子
最新推荐文章于 2020-12-20 22:12:04 发布