正在查看: xDrip+ v04633772025.07.16 应用的 WidgetUpdateService.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: xDrip+ v04633772025.07.16 应用的 WidgetUpdateService.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.eveningoutpost.dexdrip;
import android.app.Service;
import android.appwidget.AppWidgetManager;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.os.PowerManager;
import com.eveningoutpost.dexdrip.models.JoH;
import com.eveningoutpost.dexdrip.models.UserError;
public class WidgetUpdateService extends Service {
private boolean isRegistered = false;
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
PowerManager.WakeLock wakeLock = JoH.getWakeLock("xdrip-widget-bcast", 20000);
if (intent.getAction().compareTo("android.intent.action.TIME_TICK") == 0) {
WidgetUpdateService.this.updateCurrentBgInfo();
} else if (intent.getAction().compareTo("android.intent.action.SCREEN_ON") == 0) {
WidgetUpdateService.this.enableClockTicks();
WidgetUpdateService.this.updateCurrentBgInfo();
} else if (intent.getAction().compareTo("android.intent.action.SCREEN_OFF") == 0) {
WidgetUpdateService.this.disableClockTicks();
}
JoH.releaseWakeLock(wakeLock);
}
};
public static void staticRefreshWidgets() {
try {
Context appContext = xdrip.getAppContext();
if (AppWidgetManager.getInstance(appContext).getAppWidgetIds(new ComponentName(appContext, (Class<?>) xDripWidget.class)).length > 0) {
appContext.startService(new Intent(appContext, (Class<?>) WidgetUpdateService.class));
}
} catch (Exception e) {
UserError.Log.e("WidgetUpdateService", "Got exception in staticRefreshWidgets: " + e);
}
}
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void onCreate() {
super.onCreate();
PowerManager powerManager = (PowerManager) getSystemService("power");
UserError.Log.d("WidgetUpdateService", "onCreate");
if (powerManager.isInteractive()) {
enableClockTicks();
} else {
disableClockTicks();
}
}
public void enableClockTicks() {
UserError.Log.d("WidgetUpdateService", "enableClockTicks");
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.TIME_TICK");
intentFilter.addAction("android.intent.action.SCREEN_ON");
intentFilter.addAction("android.intent.action.SCREEN_OFF");
if (this.isRegistered) {
unregisterReceiver(this.broadcastReceiver);
}
registerReceiver(this.broadcastReceiver, intentFilter);
this.isRegistered = true;
}
public void disableClockTicks() {
UserError.Log.d("WidgetUpdateService", "disableClockTicks");
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.intent.action.SCREEN_ON");
intentFilter.addAction("android.intent.action.SCREEN_OFF");
if (this.isRegistered) {
unregisterReceiver(this.broadcastReceiver);
}
registerReceiver(this.broadcastReceiver, intentFilter);
this.isRegistered = true;
}
@Override
public int onStartCommand(Intent intent, int i, int i2) {
updateCurrentBgInfo();
return 1;
}
@Override
public void onDestroy() {
super.onDestroy();
BroadcastReceiver broadcastReceiver = this.broadcastReceiver;
if (broadcastReceiver != null) {
unregisterReceiver(broadcastReceiver);
this.isRegistered = false;
}
}
public void updateCurrentBgInfo() {
UserError.Log.d("WidgetUpdateService", "Sending update flag to widget");
int[] appWidgetIds = AppWidgetManager.getInstance(getApplication()).getAppWidgetIds(new ComponentName(getApplication(), (Class<?>) xDripWidget.class));
UserError.Log.d("WidgetUpdateService", "Updating " + appWidgetIds.length + " widgets");
Intent intent = new Intent(this, (Class<?>) xDripWidget.class);
intent.setAction("android.appwidget.action.APPWIDGET_UPDATE");
intent.putExtra("appWidgetIds", appWidgetIds);
sendBroadcast(intent);
}
}