ACTION_BATTERY_LOW时如何在通知栏中创建通知?

时间:2013-07-16 08:34:58

标签: android notifications broadcastreceiver android-notifications

我想在ACTION_BATTERY_LOW时创建一个简单的通知。我想要的是在电池电量低的弹出窗口出现时在状态栏中开始通知。我试过这样的方式: 在onCreate

this.registerReceiver(this.batteryLowNotifi, new IntentFilter(Intent.ACTION_BATTERY_LOW));

然后:

private void checkPref(){ 
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                                TutorialNotification.this);
                notificationBuilder.setContentTitle("Title");
                notificationBuilder.setContentText("Context");
                notificationBuilder.setTicker("TickerText");
                notificationBuilder.setWhen(System.currentTimeMillis());
                notificationBuilder.setSmallIcon(R.drawable.ic_stat_icon);

                Intent notificationIntent = new Intent(this, TutorialNotification.class);
                PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                                notificationIntent, 0);

                notificationBuilder.setContentIntent(contentIntent);

                notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                                | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

                mNotificationManager.notify(SIMPLE_NOTIFICATION_ID,
                                notificationBuilder.build());
    }   

    private BroadcastReceiver batteryInfoReceiver = new BroadcastReceiver() {

        public void onReceive(Context context, Intent intent) { 
          checkPref(intent);
      }
    }

但没有任何事情发生。有什么帮助吗?谢谢

1 个答案:

答案 0 :(得分:0)

接收器类

public class MyScheduleReceiver extends BroadcastReceiver {


    // Restart service every 30 min
    private static final long REPEAT_TIME = 30*1000*4;//1800000 ;

    @Override
    public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, service.class);
context.startService(service);
}}

服务类

public class service extends Service {

    NotificationManager mNotificationManager;
      @Override public IBinder onBind(Intent intent) {
        // Not used
        return null;
      }

      @Override public void onCreate() {
        super.onCreate();
  mNotificationManager= (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
checkPref();
}
@Override
      public void onDestroy() {
        super.onDestroy();

      }

private void checkPref(){ 
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
                                service.this);
                notificationBuilder.setContentTitle("Title");
                notificationBuilder.setContentText("Context");
                notificationBuilder.setTicker("TickerText");
                notificationBuilder.setWhen(System.currentTimeMillis());
                notificationBuilder.setSmallIcon(R.drawable.ic_stat_icon);

                Intent notificationIntent = new Intent(this, service.class);
                PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                                notificationIntent, 0);

                notificationBuilder.setContentIntent(contentIntent);

                notificationBuilder.setDefaults(Notification.DEFAULT_SOUND
                                | Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE);

                mNotificationManager.notify(1,
                                notificationBuilder.build());
    }   }

在清单

中注册接收者和服务
  <receiver android:name="MyScheduleReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.ACTION_BATTERY_LOW" />
            </intent-filter>

        </receiver>
 <service android:name="service" >
        </service>