登录 立即注册
安币:

安卓巴士 - 安卓开发 - Android开发 - 安卓 - 移动互联网门户

查看: 502687|回复: 27

Toast、Notification、Alarm, Android中的通知实现

  [复制链接]

328

主题

383

帖子

4623

安币

码皇(巴士元老)

Rank: 8Rank: 8

发表于 2011-10-5 16:18:13 | 显示全部楼层 |阅读模式
启动AcStart,负责在创建时立即创建一个Notification在状态栏中,处理动作为后面的AcNotificationDealer。
AcStart.java
  1. package jtapp.notifications;
  2. import android.app.Activity;
  3. import android.app.Notification;
  4. import android.app.NotificationManager;
  5. import android.app.PendingIntent;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.net.Uri;
  9. import android.os.Bundle;
  10. public class AcStart extends Activity {
  11.     /** Called when the activity is first created. */
  12.     @Override
  13.     public void onCreate(Bundle savedInstanceState) {
  14.         super.onCreate(savedInstanceState);
  15.         setContentView(R.layout.main);
  16.         
  17.         String ns = Context.NOTIFICATION_SERVICE;
  18.         NotificationManager mNotificationManager =
  19.                 (NotificationManager) getSystemService(ns);
  20.         Long when = System.currentTimeMillis();
  21.         CharSequence tickerText = "My notification: Hello World! Click to deal this notification.";
  22.         Notification notification =
  23.                 new Notification(R.drawable.icon, tickerText, when);
  24.         notification.vibrate = new long[] {100,250,100,500};
  25.         
  26.         Context context = getApplicationContext();
  27.         CharSequence contentTitle = "My notification";
  28.         CharSequence contentText = "Hello World! Click to deal this notification.";
  29.         Intent notificationIntent =
  30.                 new Intent(this, AcNotificationDealer.class);
  31.         PendingIntent contentIntent =
  32.                 PendingIntent.getActivity(this, 0, notificationIntent, 0);
  33.         notification.setLatestEventInfo(
  34.                         context, contentTitle, contentText, contentIntent);
  35.         
  36.         mNotificationManager.notify(9999, notification);
  37.     }
  38. }
复制代码

取消上一通知,创建10s定时器通知。
AcNotificationDealer.java
  1. package jtapp.notifications;
  2. import java.util.Calendar;
  3. import android.app.Activity;
  4. import android.app.AlarmManager;
  5. import android.app.NotificationManager;
  6. import android.app.PendingIntent;
  7. import android.content.Context;
  8. import android.content.Intent;
  9. import android.os.Bundle;
  10. import android.widget.Toast;
  11. public class AcNotificationDealer extends Activity {
  12.         /** Called when the activity is first created. */
  13.     @Override
  14.     public void onCreate(Bundle savedInstanceState) {
  15.         super.onCreate(savedInstanceState);
  16.         setContentView(R.layout.notifdealer);
  17.         
  18.         String ns = Context.NOTIFICATION_SERVICE;
  19.         NotificationManager mNotificationManager =
  20.                 (NotificationManager) getSystemService(ns);
  21.         mNotificationManager.cancel(9999);
  22.         
  23.         Intent intent = new Intent(
  24.                         AcNotificationDealer.this, ReceiverAlarm.class);
  25.         PendingIntent appIntent =
  26.                 PendingIntent.getBroadcast(
  27.                                 AcNotificationDealer.this, 0, intent, 0);
  28.         Calendar calendar = Calendar.getInstance();
  29.         calendar.setTimeInMillis(System.currentTimeMillis());
  30.         calendar.add(Calendar.SECOND, 10);
  31.         
  32.         AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
  33.         am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), appIntent);
  34.         
  35.         Toast.makeText(this, "10秒后在状态栏将创建定时器通知.", Toast.LENGTH_LONG).show();
  36.     }
  37.    
  38.    
  39. }
复制代码

接受10s定时器通知,并创建状态栏通知。
ReceiverAlarm.java
  1. package jtapp.notifications;
  2. import android.app.Notification;
  3. import android.app.NotificationManager;
  4. import android.app.PendingIntent;
  5. import android.content.BroadcastReceiver;
  6. import android.content.Context;
  7. import android.content.Intent;
  8. import android.net.Uri;
  9. public class ReceiverAlarm extends BroadcastReceiver {
  10.         @Override
  11.         public void onReceive(Context context, Intent intent) {
  12.                  String ns = Context.NOTIFICATION_SERVICE;
  13.                 NotificationManager mNotificationManager =
  14.                         (NotificationManager) context.getSystemService(ns);
  15.                 Long when = System.currentTimeMillis();
  16.                 CharSequence tickerText = "My Alarm Fired:Hello World Alarm! Click ready to dial 10010.";
  17.                 Notification notification =
  18.                         new Notification(R.drawable.icon, tickerText, when);
  19.                 notification.vibrate = new long[] {100,250,100,500};
  20.                
  21.                 CharSequence contentTitle = "My Alarm Fired";
  22.                 CharSequence contentText = "Hello World Alarm! Click ready to dial 10010.";
  23.                 Intent notificationIntent =
  24.                         new Intent(Intent.ACTION_DIAL, Uri.parse("tel:10010"));
  25.                 PendingIntent contentIntent =
  26.                         PendingIntent.getActivity(context, 0, notificationIntent, 0);
  27.                 notification.setLatestEventInfo(
  28.                                 context, contentTitle, contentText, contentIntent);
  29.                 
  30.                 mNotificationManager.notify(9998, notification);
  31.         }
  32. }
复制代码

main.xml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical"
  4.     android:layout_width="fill_parent"
  5.     android:layout_height="fill_parent"
  6.     >
  7. <TextView  
  8.     android:layout_width="fill_parent"
  9.     android:layout_height="wrap_content"
  10.     android:text="启动该Activity后, 会在状态栏产生一个通知,该通知用来进入通知处理Activity."
  11.     />
  12. </LinearLayout>
复制代码
notifdealer.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3.     android:orientation="vertical"
  4.     android:layout_width="fill_parent"
  5.     android:layout_height="fill_parent"
  6.     >
  7. <TextView  
  8.     android:layout_width="fill_parent"
  9.     android:layout_height="wrap_content"
  10.     android:text="此页面为通知处理页面,用来处理点击状态栏Notification后的流程,状态栏上会自动取消该通知,并且设定10秒后创建Dial 10010的定时器通知。"
  11.     />
  12. </LinearLayout>
复制代码
AndroidManifest.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.       package="jtapp.notifications"
  4.       android:versionCode="1"
  5.       android:versionName="1.0">
  6.     <application android:icon="@drawable/icon" android:label="@string/app_name">
  7.         <activity android:name=".AcStart"
  8.                   android:label="@string/app_name">
  9.             <intent-filter>
  10.                 <action android:name="android.intent.action.MAIN" />
  11.                 <category android:name="android.intent.category.LAUNCHER" />
  12.             </intent-filter>
  13.         </activity>
  14.     <activity android:name="AcNotificationDealer"></activity>
  15. <receiver android:name="ReceiverAlarm"></receiver>
  16. </application>
  17. <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
  18. <uses-permission android:name="android.permission.VIBRATE"></uses-permission>
  19. </manifest>
复制代码


1

主题

63

帖子

121

安币

程序猿

Rank: 2

QQ达人

发表于 2012-1-7 17:12:30 | 显示全部楼层
学习了  支持

0

主题

8

帖子

41

安币

初级码农

Rank: 1

发表于 2012-1-7 23:56:35 | 显示全部楼层
学习中哈

0

主题

8

帖子

41

安币

初级码农

Rank: 1

发表于 2012-1-7 23:56:44 | 显示全部楼层
学习中哈!!!

0

主题

381

帖子

246

安币

攻城狮

Rank: 3Rank: 3

QQ达人

QQ
发表于 2012-1-30 18:11:11 | 显示全部楼层
学习了啊。不错啊。值的一学啊。

9

主题

106

帖子

445

安币

攻城狮

Rank: 3Rank: 3

QQ达人

发表于 2012-1-31 11:12:35 | 显示全部楼层
路过  学习下

3

主题

151

帖子

145

安币

攻城狮

Rank: 3Rank: 3

发表于 2012-2-3 09:59:03 | 显示全部楼层
学习中 这东西还是不错的

98

主题

1077

帖子

4132

安币

码皇(巴士元老)

Android奋斗者

Rank: 8Rank: 8

QQ达人

QQ
发表于 2012-6-17 13:12:04 | 显示全部楼层
这代码太多了,哈哈哈,以后再看吧
加油!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站长推荐

通过邮件订阅最新安卓weekly信息
上一条 /4 下一条

下载安卓巴士客户端

全国最大的安卓开发者社区
联系我们
关闭
合作电话:
15618560077
Email:
805941275@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|下载客户端|申请友链|手机版|站点统计|安卓巴士 ( 粤ICP备15117877号 )

快速回复 返回顶部 返回列表