zoukankan      html  css  js  c++  java
  • Android状态栏提醒(Notification、NotificationManager)

    package com.WTFly.Service;

    import com.WTFly.infoqueue.MainActivity;
    import com.WTFly.infoqueue.R;

    import android.R.string;
    import android.app.IntentService;
    import android.app.Notification;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.content.Intent;
    import android.util.Log;

    public class InfoService extends IntentService
    {
     public static String TAG = "InfoService";

     public InfoService()
     {
      super("InfoService");
     }

     @Override
     protected void onHandleIntent(Intent intent)
     {
      Log.i(TAG, "开始下载");
      ShowNotification(false);
      try
      {
       Thread.sleep(10000);
       ShowNotification(true);
      } catch (InterruptedException e)
      {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
      Log.i(TAG, "程序下载完毕");
     }

     private void ShowNotification(boolean finish)
     {
      NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
      Notification notification;
      Intent intent = new Intent(this, MainActivity.class);
      // 设置在下拉列表中的信息,其中PendingIntent用于设置,Notification项被按下后,发送的Intent.此处为打开MainActivity
      // 该语句的作用是定义了一个不是当即显示的activity,只有当用户拉下notify显示列表,并且单击对应的项的时候,才会触发系统跳转到该activity.
      PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
      if (!finish)
      {
       notification = new Notification(R.drawable.title, "开始下载", System.currentTimeMillis());
       // 在此处设置在notify列表里的该notification的显示情况
       notification.setLatestEventInfo(this, "下载", "正在下载中", contentIntent);

      } else
      {
       notification = new Notification(R.drawable.title, "下载完毕", System.currentTimeMillis());
       // 在此处设置在notify列表里的该notification的显示情况
       notification.setLatestEventInfo(this, "下载", "程序下载完毕", contentIntent);
      }

    //当加上这句默认的震动,声音,LED变量的默认语句时,系统会报错,主要是在没有加上权限。
      notification.defaults=Notification.DEFAULT_ALL;


      notificationManager.notify(R.menu.main, notification);

     }

    }

    在AndroidManifest.xml中添加"android.permission.VIBRATE"权限即可解决。因为Notification设置了DEFAULT_ALL默认包含了DEFAULT_VIBRATE,而DEFAULT_VIBRATE是要求VIBRATE震动权限的,没有添加该权限的话,当程序有震动请求时自然就会报错退出了。

    AndroidManifest.xml
    <uses-permission android:name="android.permission.VIBRATE"/>

     //通知时震动效果

     m_Notification.defaults = Notification.DEFAULT_VIBRATE;

    //通知时屏幕发亮

     m_Notification.defaults = Notification.DEFAULT_LIGHTS;

    //通知时既震动又屏幕发亮还有默认的声音

    m_Notification.defaults = Notification.DEFAULT_ALL;

  • 相关阅读:
    java短信验证和注册
    java两个对象属性比较
    mysql像通讯录一样把中文按字母排序的sql
    开发APP必须知道的API集合,来源http://www.cnblogs.com/wikiki/p/7232388.html
    第三方短信接口使用测试
    Guava google缓存机制
    Integer 使用==判断127和超过128的数据的区别
    js加密后台加密解密以及验证码
    sqlserver system object type
    为RadComboBox添加SelectionChanging事件
  • 原文地址:https://www.cnblogs.com/WTFly/p/3156230.html
Copyright © 2011-2022 走看看