0

为什么我的服务在BOOT_COMPLETED上启动,但不在BATTERY_LOW中启动?代码:为什么服务在BOOT_COMPLETED启动,但不启动BATTERY_LOW?

MyScheduleReceiver.java

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); 
}} 

service.java

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()); 
    } } 

和明显

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"> 
<uses-permission android:name="android.permission.BATTERY_STATS"> 
<receiver android:name="MyScheduleReceiver" > 
    <intent-filter> 
     <action android:name="android.intent.action.BATTERY_LOW" /> 
    </intent-filter> 

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

嗯,我想用电池电量低显示不会出现在通知..如果我使用BOOT_COMPLETED更改动作,并重新启动设备,那么为什么?

回答

0

看看这个答案:https://stackoverflow.com/a/12348778/2508174

看起来你需要programmaticaly SUBCRIBE那些意图太。它看起来像你不需要BATTERY_STATS权限来做顺便说一句。

希望它有帮助

+0

嗯,谢谢..以后我会尝试:-)。所以BOOT_COMPLETED不需要以编程方式编写意图..很奇怪:-) –

+0

你觉得TIME_TICK是一样的吗? –

+0

不知道,最好是测试;) – Benoit