假设我正在创建一个类似于SMS应用程序的
Android应用程序.要求如下:
>用户可以接收多个通知,每个通知都具有int类型的动态ID.
>选择通知后,它会加载显示相应消息(SMS)的活动.
>应自动取消选中的单个通知.
我对如何处理这个问题的想法是使用putExtra将整数ID添加到intent中,然后可以从它加载的活动中的intent中访问它,然后它会关闭调用它的通知.
对于我的测试用例,这里是规格:
>通知最终会
从现在开始,从服务生成
他们正在测试时产生
用户按下按钮.
>选择通知时,
被称为活动的消息,
然后试图解雇
通知. (为了
能见度)
这是我的问题:
>第一次通知时
选中,这是对的.该
通知被驳回.
>每次连续通知时
选中,第一个通知
ID显示,没有
驳回.
>我是Java新手,比较习惯
脚本语言(如
Perl,PHP等):)
这是我的来源:
<?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:id="@+id/create_notification" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dp" android:text = "Create new notification" />
package org.test.notifydemo; import android.app.Activity; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.util.Random; public class aRunNotificationDemo extends Activity { private NotificationManager mNotificationManager; @Override public void onCreate( Bundle icicle ) { super.onCreate( icicle ); setContentView( R.layout.run_notify_demo ); mNotificationManager = (NotificationManager) getSystemService( aRunNotificationDemo.NOTIFICATION_SERVICE ); int close_notify_id = getIntent().getIntExtra( "notification_id",0 ); if ( close_notify_id != 0 ) { Toast.makeText( aRunNotificationDemo.this,"Dimissing this notification: " + Integer.toString(close_notify_id),Toast.LENGTH_SHORT ).show(); mNotificationManager.cancel( close_notify_id ); } findViewById( R.id.create_notification ).setOnClickListener( new MyButtonListener() ); } private class MyButtonListener implements Button.OnClickListener { public void onClick( View my_view ) { Random randGen = new Random(); int notify_id = randGen.nextInt(); int icon = R.drawable.icon_notification_01; CharSequence tickerText = Integer.toString(notify_id) + " New SMS!"; long when = System.currentTimeMillis(); Notification my_notification = new Notification(icon,tickerText,when); Context context = getApplicationContext(); CharSequence contentTitle = Integer.toString(notify_id) + " New SMS Available!"; CharSequence contentText = Integer.toString(notify_id) + " There is a new SMS available."; Intent notificationIntent = new Intent( aRunNotificationDemo.this,aRunNotificationDemo.class ); notificationIntent.putExtra( "notification_id",notify_id ); PendingIntent contentIntent = PendingIntent.getActivity( aRunNotificationDemo.this,notificationIntent,0 ); my_notification.setLatestEventInfo( context,contentTitle,contentText,contentIntent ); mNotificationManager.notify( notify_id,my_notification ); } } }