论坛首页 移动开发技术论坛

Android 控件之Notification

浏览 7210 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-06-27  
引用

最近一直在研究android,并一边研究一边做应用。其中遇到了把程序通知常驻在Notification栏,并且不能被clear掉的问题。虽然notify()的第一个参数可以写死并clear掉,但这个值我并不想写死,但是这个值如果是随机生成一个数怎么传给Activity,用Intent当中的Bundle是可以传值过去,但是一个Notification消息是没问题,一但有多个消息,这个值就不管用了,大家有什么好的方法?


main.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<Button android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:id="@+id/button"
		android:text="显示消息提示" />
</LinearLayout>


notification_layout.xml布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent" android:layout_height="wrap_content">
	<EditText android:text="启动Notification" android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:editable="false"
		android:cursorVisible="false" android:layout_gravity="center_horizontal" />
</LinearLayout>


IaiaiActivity.java类:
package com.iaiai.activity;

import java.util.Date;
import java.util.Random;

import android.app.Activity;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

/**
 * 
 * <p>
 * Title: IaiaiActivity.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-6-26
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class IaiaiActivity extends Activity {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Button button = (Button) findViewById(R.id.button);
		View.OnClickListener listener = new View.OnClickListener() {

			@Override
			public void onClick(View view) {
				PendingIntent pending = PendingIntent.getActivity(
						IaiaiActivity.this, 0, new Intent(IaiaiActivity.this,
								NotificationActivity.class), 0);

				Notification noticed = new Notification();
				noticed.icon = R.drawable.icon;
				noticed.tickerText = "状态栏通知";

				// noticed.defaults = Notification.DEFAULT_SOUND; // 使用默认的声音
				// noticed.defaults = Notification.DEFAULT_VIBRATE; // 使用默认的震动
				// noticed.defaults = Notification.DEFAULT_LIGHTS; // 使用默认的Light
				// noticed.defaults = Notification.DEFAULT_ALL; // 所有的都使用默认值
				noticed.defaults = Notification.DEFAULT_SOUND;
				
				//设置音乐
				// noticed.sound = Uri.parse("file:///sdcard/notification/ringer.mp3");
				// noticed.sound = Uri.withAppendedPath(Audio.Media.INTERNAL_CONTENT_URI, "6");

				noticed.setLatestEventInfo(IaiaiActivity.this, "这是一个状态栏通知",
						"查看", pending);
				NotificationManager noticedManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
				noticedManager.notify(0, noticed);
			}
		};
		button.setOnClickListener(listener);
	}

	public int getRand() {
		Date date = new Date();
		int year = date.getYear();
		int month = date.getMonth();
		int day = date.getDate();
		return 0;
	}

}


NotificationActivity.java类:
package com.iaiai.activity;

import android.app.Activity;
import android.app.NotificationManager;
import android.os.Bundle;

/**
 * 
 * <p>
 * Title: NotificationActivity.java
 * </p>
 * <p>
 * E-Mail: 176291935@qq.com
 * </p>
 * <p>
 * QQ: 176291935
 * </p>
 * <p>
 * Http: iaiai.iteye.com
 * </p>
 * <p>
 * Create time: 2011-6-26
 * </p>
 * 
 * @author 丸子
 * @version 0.0.1
 */
public class NotificationActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		setContentView(R.layout.notification_layout);
		
		Bundle bundle = getIntent().getExtras();
		
		NotificationManager noticedManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
		noticedManager.cancel(0);
	}

}


运行结果:

  • 大小: 14.3 KB
  • 大小: 41.9 KB
   发表时间:2011-07-05  
我也遇到同样的困惑,第一个参数写死只能每次只能显示一个notification。
0 请登录后投票
   发表时间:2011-07-06  
new Intent.setflags(Intent.FLAG_NO_ClEAR).(IaiaiActivity.this,NotificationActivity.class)
0 请登录后投票
   发表时间:2011-11-11  
我想请问notify(int id,  Notification notification)是不是通知栏一直会有提示,就算拉下来点了也去不掉?如果我想拉下来点了然后就消失了怎么做啊?
0 请登录后投票
   发表时间:2012-01-18  
楼主 你有没有在真机上试过震动这个选选项
0 请登录后投票
   发表时间:2012-03-10  
看看我的博客吧,有些Notification的
问题我列到那上面了
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics