diff --git a/appbase/build.gradle b/appbase/build.gradle
index d93b9f4..1ad2cf5 100644
--- a/appbase/build.gradle
+++ b/appbase/build.gradle
@@ -29,7 +29,7 @@ android {
// versionName 更新后需要手动设置
// .winboll/winbollBuildProps.properties 文件的 stageCount=0
// Gradle编译环境下合起来的 versionName 就是 "${versionName}.0"
- versionName "2.0"
+ versionName "2.1"
if(true) {
versionName = genVersionName("${versionName}")
}
@@ -44,9 +44,13 @@ android {
}
dependencies {
- api project(':libappbase')
+ implementation project(':libappbase')
implementation fileTree(dir: 'libs', include: ['*.jar'])
+ // SSH
+ implementation 'com.jcraft:jsch:0.1.55'
+ // Html 解析
+ implementation 'org.jsoup:jsoup:1.13.1'
// 二维码类库
implementation 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
diff --git a/appbase/build.properties b/appbase/build.properties
index 741f66b..b044c5c 100644
--- a/appbase/build.properties
+++ b/appbase/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Thu Feb 27 02:34:13 GMT 2025
-stageCount=3
+#Sat Mar 08 02:31:11 HKT 2025
+stageCount=2
libraryProject=libappbase
-baseVersion=2.0
-publishVersion=2.0.2
-buildCount=4
-baseBetaVersion=2.0.3
+baseVersion=2.1
+publishVersion=2.1.1
+buildCount=0
+baseBetaVersion=2.1.2
diff --git a/appbase/src/main/AndroidManifest.xml b/appbase/src/main/AndroidManifest.xml
index 1ada098..4fdc630 100644
--- a/appbase/src/main/AndroidManifest.xml
+++ b/appbase/src/main/AndroidManifest.xml
@@ -54,19 +54,25 @@
+
+
-
-
+
+
+
+
+
+
-
+
-
+
-
+
@@ -91,6 +97,11 @@
android:name="android.max_aspect"
android:value="4.0"/>
+
+
+
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/App.java b/appbase/src/main/java/cc/winboll/studio/appbase/App.java
index 84d0424..f2098d7 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/App.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/App.java
@@ -6,22 +6,23 @@ package cc.winboll.studio.appbase;
* @Describe APPbase 应用类
*/
import cc.winboll.studio.libappbase.GlobalApplication;
-import cc.winboll.studio.libappbase.SOSCSBroadcastReceiver;
import android.content.IntentFilter;
+import cc.winboll.studio.libappbase.sos.SOSCenterServiceReceiver;
+import cc.winboll.studio.libappbase.sos.SOS;
public class App extends GlobalApplication {
public static final String TAG = "App";
- SOSCSBroadcastReceiver mSOSCSBroadcastReceiver;
+ SOSCenterServiceReceiver mSOSCenterServiceReceiver;
@Override
public void onCreate() {
super.onCreate();
GlobalApplication.setIsDebuging(this, BuildConfig.DEBUG);
- mSOSCSBroadcastReceiver = new SOSCSBroadcastReceiver();
+ mSOSCenterServiceReceiver = new SOSCenterServiceReceiver();
IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(SOSCSBroadcastReceiver.ACTION_SOS);
- registerReceiver(mSOSCSBroadcastReceiver, intentFilter);
+ intentFilter.addAction(SOS.ACTION_SOS);
+ registerReceiver(mSOSCenterServiceReceiver, intentFilter);
}
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java b/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
index 9ac5266..32d7431 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/MainActivity.java
@@ -1,6 +1,5 @@
package cc.winboll.studio.appbase;
-import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
@@ -9,15 +8,16 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import cc.winboll.studio.appbase.R;
import cc.winboll.studio.appbase.services.MainService;
+import cc.winboll.studio.appbase.services.TestDemoBindService;
+import cc.winboll.studio.appbase.services.TestDemoService;
import cc.winboll.studio.libappbase.GlobalApplication;
import cc.winboll.studio.libappbase.LogUtils;
import cc.winboll.studio.libappbase.LogView;
-import cc.winboll.studio.libappbase.WinBoll;
-import cc.winboll.studio.libappbase.SimpleOperateSignalCenterService;
-import cc.winboll.studio.libappbase.bean.APPNewsBean;
-import cc.winboll.studio.libappbase.services.TestService;
import cc.winboll.studio.libappbase.widgets.StatusWidget;
import com.hjq.toast.ToastUtils;
+import android.content.ComponentName;
+import cc.winboll.studio.libappbase.sos.SOS;
+import cc.winboll.studio.libappbase.sos.SOSObject;
public class MainActivity extends AppCompatActivity {
@@ -68,17 +68,17 @@ public class MainActivity extends AppCompatActivity {
MainService.stopMainService(this);
}
- public void onTestStopWithoutSettingEnable(View view) {
- LogUtils.d(TAG, "onTestStopWithoutSettingEnable");
- stopService(new Intent(this, SimpleOperateSignalCenterService.class));
+ public void onTestStopMainServiceWithoutSettingEnable(View view) {
+ LogUtils.d(TAG, "onTestStopMainServiceWithoutSettingEnable");
+ stopService(new Intent(this, MainService.class));
}
- public void onTestStartWithString(View view) {
- LogUtils.d(TAG, "onTestStartWithString");
+ public void onTestUseComponentStartService(View view) {
+ LogUtils.d(TAG, "onTestUseComponentStartService");
// 目标服务的包名和类名
String packageName = this.getPackageName();
- String serviceClassName = SimpleOperateSignalCenterService.class.getName();
+ String serviceClassName = TestDemoService.class.getName();
// 构建Intent
Intent intentService = new Intent();
@@ -87,30 +87,55 @@ public class MainActivity extends AppCompatActivity {
startService(intentService);
}
- public void onSOS(View view) {
- Intent intent = new Intent(this, TestService.class);
+ public void onTestSOS(View view) {
+ Intent intent = new Intent(this, TestDemoService.class);
stopService(intent);
- WinBoll.sosService(this, new APPNewsBean(getPackageName(), TestService.class.getName()));
+ if(App.isDebuging()) {
+ SOS.sosToAppBaseBeta(this, TestDemoService.class.getName());
+ } else {
+ SOS.sosToAppBase(this, TestDemoService.class.getName());
+ }
}
- public void onStartTestService(View view) {
- Intent intent = new Intent(this, TestService.class);
- intent.setAction(WinBoll.ACTION_SERVICE_ENABLE);
+ public void onSartTestDemoService(View view) {
+ Intent intent = new Intent(this, TestDemoService.class);
+ intent.setAction(TestDemoService.ACTION_ENABLE);
startService(intent);
}
- public void onStopTestService(View view) {
- Intent intent = new Intent(this, TestService.class);
- intent.setAction(WinBoll.ACTION_SERVICE_DISABLE);
+ public void onStopTestDemoService(View view) {
+ Intent intent = new Intent(this, TestDemoService.class);
+ intent.setAction(TestDemoService.ACTION_DISABLE);
startService(intent);
- Intent intentStop = new Intent(this, TestService.class);
+ Intent intentStop = new Intent(this, TestDemoService.class);
stopService(intentStop);
}
- public void onStopTestServiceNoSettings(View view) {
- Intent intent = new Intent(this, TestService.class);
+ public void onStopTestDemoServiceNoSettings(View view) {
+ Intent intent = new Intent(this, TestDemoService.class);
+ stopService(intent);
+ }
+
+ public void onSartTestDemoBindService(View view) {
+ Intent intent = new Intent(this, TestDemoBindService.class);
+ intent.setAction(TestDemoBindService.ACTION_ENABLE);
+ startService(intent);
+
+ }
+
+ public void onStopTestDemoBindService(View view) {
+ Intent intent = new Intent(this, TestDemoBindService.class);
+ intent.setAction(TestDemoBindService.ACTION_DISABLE);
+ startService(intent);
+
+ Intent intentStop = new Intent(this, TestDemoBindService.class);
+ stopService(intentStop);
+ }
+
+ public void onStopTestDemoBindServiceNoSettings(View view) {
+ Intent intent = new Intent(this, TestDemoBindService.class);
stopService(intent);
}
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/beans/MainServiceBean.java b/appbase/src/main/java/cc/winboll/studio/appbase/beans/MainServiceBean.java
index 81a3a7a..580b6e5 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/beans/MainServiceBean.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/beans/MainServiceBean.java
@@ -35,8 +35,7 @@ public class MainServiceBean extends BaseBean {
@Override
public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException {
super.writeThisToJsonWriter(jsonWriter);
- MainServiceBean bean = this;
- jsonWriter.name("isEnable").value(bean.isEnable());
+ jsonWriter.name("isEnable").value(isEnable());
}
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/bean/TestServiceBean.java b/appbase/src/main/java/cc/winboll/studio/appbase/beans/TestDemoBindServiceBean.java
similarity index 87%
rename from libappbase/src/main/java/cc/winboll/studio/libappbase/bean/TestServiceBean.java
rename to appbase/src/main/java/cc/winboll/studio/appbase/beans/TestDemoBindServiceBean.java
index 30d8cfe..59649a6 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/bean/TestServiceBean.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/beans/TestDemoBindServiceBean.java
@@ -1,8 +1,8 @@
-package cc.winboll.studio.libappbase.bean;
+package cc.winboll.studio.appbase.beans;
/**
* @Author ZhanGSKen@AliYun.Com
- * @Date 2025/02/19 13:34:52
+ * @Date 2025/03/07 12:47:22
* @Describe TestServiceBean
*/
import android.util.JsonReader;
@@ -10,13 +10,13 @@ import android.util.JsonWriter;
import cc.winboll.studio.libappbase.BaseBean;
import java.io.IOException;
-public class TestServiceBean extends BaseBean {
+public class TestDemoBindServiceBean extends BaseBean {
public static final String TAG = "TestServiceBean";
boolean isEnable;
- public TestServiceBean() {
+ public TestDemoBindServiceBean() {
this.isEnable = false;
}
@@ -30,7 +30,7 @@ public class TestServiceBean extends BaseBean {
@Override
public String getName() {
- return TestServiceBean.class.getName();
+ return TestDemoBindServiceBean.class.getName();
}
@Override
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/beans/TestDemoServiceBean.java b/appbase/src/main/java/cc/winboll/studio/appbase/beans/TestDemoServiceBean.java
new file mode 100644
index 0000000..680d2e4
--- /dev/null
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/beans/TestDemoServiceBean.java
@@ -0,0 +1,68 @@
+package cc.winboll.studio.appbase.beans;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/03/07 12:49:21
+ * @Describe TestDemoServiceBean
+ */
+import android.util.JsonReader;
+import android.util.JsonWriter;
+import cc.winboll.studio.libappbase.BaseBean;
+import java.io.IOException;
+
+public class TestDemoServiceBean extends BaseBean {
+
+ public static final String TAG = "TestDemoServiceBean";
+
+ boolean isEnable;
+
+ public TestDemoServiceBean() {
+ this.isEnable = false;
+ }
+
+ public void setIsEnable(boolean isEnable) {
+ this.isEnable = isEnable;
+ }
+
+ public boolean isEnable() {
+ return isEnable;
+ }
+
+ @Override
+ public String getName() {
+ return TestDemoServiceBean.class.getName();
+ }
+
+ @Override
+ public void writeThisToJsonWriter(JsonWriter jsonWriter) throws IOException {
+ super.writeThisToJsonWriter(jsonWriter);
+ jsonWriter.name("isEnable").value(isEnable());
+
+ }
+
+ @Override
+ public boolean initObjectsFromJsonReader(JsonReader jsonReader, String name) throws IOException {
+ if (super.initObjectsFromJsonReader(jsonReader, name)) { return true; } else {
+ if (name.equals("isEnable")) {
+ setIsEnable(jsonReader.nextBoolean());
+ } else {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ @Override
+ public BaseBean readBeanFromJsonReader(JsonReader jsonReader) throws IOException {
+ jsonReader.beginObject();
+ while (jsonReader.hasNext()) {
+ String name = jsonReader.nextName();
+ if (!initObjectsFromJsonReader(jsonReader, name)) {
+ jsonReader.skipValue();
+ }
+ }
+ // 结束 JSON 对象
+ jsonReader.endObject();
+ return this;
+ }
+}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/receivers/MainReceiver.java b/appbase/src/main/java/cc/winboll/studio/appbase/receivers/MainReceiver.java
index 364fe5d..4b82474 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/receivers/MainReceiver.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/receivers/MainReceiver.java
@@ -13,16 +13,18 @@ import android.content.Intent;
import android.content.IntentFilter;
import cc.winboll.studio.appbase.beans.WinBollNewsBean;
import cc.winboll.studio.appbase.services.MainService;
-import cc.winboll.studio.appbase.widgets.WinBollNewsWidget;
+import cc.winboll.studio.appbase.widgets.APPNewsWidget;
import cc.winboll.studio.libappbase.AppUtils;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.WinBoll;
-import cc.winboll.studio.libappbase.bean.APPNewsBean;
import com.hjq.toast.ToastUtils;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.text.SimpleDateFormat;
import java.util.Date;
+import cc.winboll.studio.libappbase.sos.WinBoll;
+import cc.winboll.studio.libappbase.sos.APPModel;
+import cc.winboll.studio.libappbase.sos.SOS;
+import cc.winboll.studio.libappbase.sos.SOSObject;
public class MainReceiver extends BroadcastReceiver {
@@ -45,70 +47,58 @@ public class MainReceiver extends BroadcastReceiver {
LogUtils.d(TAG, "ACTION_BIND");
LogUtils.d(TAG, String.format("context.getPackageName() %s", context.getPackageName()));
LogUtils.d(TAG, String.format("intent.getAction() %s", intent.getAction()));
- String SOS = intent.getStringExtra("SOS");
- LogUtils.d(TAG, String.format("SOS %s", SOS));
- if (SOS != null && SOS.equals("Service")) {
- String szAPPSOSBean = intent.getStringExtra("APPSOSBean");
- LogUtils.d(TAG, String.format("szAPPSOSBean %s", szAPPSOSBean));
- if (szAPPSOSBean != null && !szAPPSOSBean.equals("")) {
- try {
- APPNewsBean bean = APPNewsBean.parseStringToBean(szAPPSOSBean, APPNewsBean.class);
- if (bean != null) {
- String szNewsPackageName = bean.getNewsPackageName();
- LogUtils.d(TAG, String.format("szNewsPackageName %s", szNewsPackageName));
- String szNewsClassName = bean.getNewsClassName();
- LogUtils.d(TAG, String.format("szNewsClassName %s", szNewsClassName));
- mwrService.get().bindSOSConnection(bean);
- }
- } catch (IOException e) {
- LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
+ String szAPPModel = intent.getStringExtra(WinBoll.EXTRA_APPMODEL);
+ LogUtils.d(TAG, String.format("szAPPModel %s", szAPPModel));
+ if (szAPPModel != null && !szAPPModel.equals("")) {
+ try {
+ APPModel bean = APPModel.parseStringToBean(szAPPModel, APPModel.class);
+ if (bean != null) {
+ String szAppPackageName = bean.getAppPackageName();
+ LogUtils.d(TAG, String.format("szAppPackageName %s", szAppPackageName));
+ String szAppMainServiveName = bean.getAppMainServiveName();
+ LogUtils.d(TAG, String.format("szAppMainServiveName %s", szAppMainServiveName));
+ mwrService.get().bindAPPModelConnection(bean);
}
+ } catch (IOException e) {
+ LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
}
}
- } else if (intent.getAction().equals(WinBoll.ACTION_SOS)) {
+ } else if (intent.getAction().equals(SOS.ACTION_SOS)) {
LogUtils.d(TAG, "ACTION_SOS");
- LogUtils.d(TAG, String.format("context.getPackageName() %s", context.getPackageName()));
- LogUtils.d(TAG, String.format("intent.getAction() %s", intent.getAction()));
- String SOS = intent.getStringExtra("SOS");
- LogUtils.d(TAG, String.format("SOS %s", SOS));
- if (SOS != null && SOS.equals("Service")) {
- String szAPPNewsBean = intent.getStringExtra("APPSOSBean");
- LogUtils.d(TAG, String.format("szAPPNewsBean %s", szAPPNewsBean));
- if (szAPPNewsBean != null && !szAPPNewsBean.equals("")) {
- try {
- APPNewsBean bean = APPNewsBean.parseStringToBean(szAPPNewsBean, APPNewsBean.class);
- if (bean != null) {
- String szNewsPackageName = bean.getNewsPackageName();
- LogUtils.d(TAG, String.format("szNewsPackageName %s", szNewsPackageName));
- String szNewsClassName = bean.getNewsClassName();
- LogUtils.d(TAG, String.format("szNewsClassName %s", szNewsClassName));
+ String sos = intent.getStringExtra(SOS.EXTRA_OBJECT);
+ LogUtils.d(TAG, String.format("SOS %s", sos));
+ if (sos != null && !sos.equals("")) {
+ SOSObject bean = SOS.parseSOSObject(sos);
+ if (bean != null) {
+ String szObjectPackageName = bean.getObjectPackageName();
+ LogUtils.d(TAG, String.format("szObjectPackageName %s", szObjectPackageName));
+ String szObjectServiveName = bean.getObjectServiveName();
+ LogUtils.d(TAG, String.format("szObjectServiveName %s", szObjectServiveName));
- Intent intentService = new Intent();
- intentService.setComponent(new ComponentName(szNewsPackageName, szNewsClassName));
- context.startService(intentService);
+ Intent intentService = new Intent();
+ intentService.setComponent(new ComponentName(szObjectPackageName, szObjectServiveName));
+ context.startService(intentService);
- String appName = AppUtils.getAppNameByPackageName(context, szNewsPackageName);
- LogUtils.d(TAG, String.format("appName %s", appName));
- WinBollNewsBean appWinBollNewsBean = new WinBollNewsBean(appName);
- SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
- String currentTime = sdf.format(new Date());
- StringBuilder sbLine = new StringBuilder();
- sbLine.append("[");
- sbLine.append(currentTime);
- sbLine.append("] Power to ");
- sbLine.append(appName);
- appWinBollNewsBean.setMessage(sbLine.toString());
+ String appName = AppUtils.getAppNameByPackageName(context, szObjectPackageName);
+ LogUtils.d(TAG, String.format("appName %s", appName));
+ WinBollNewsBean appWinBollNewsBean = new WinBollNewsBean(appName);
+ SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
+ String currentTime = sdf.format(new Date());
+ StringBuilder sbLine = new StringBuilder();
+ sbLine.append("[");
+ sbLine.append(currentTime);
+ sbLine.append("] Power to ");
+ sbLine.append(appName);
+ appWinBollNewsBean.setMessage(sbLine.toString());
- WinBollNewsWidget.addWinBollNewsBean(context, appWinBollNewsBean);
+ APPNewsWidget.addWinBollNewsBean(context, appWinBollNewsBean);
- Intent intentWidget = new Intent(context, WinBollNewsWidget.class);
- intentWidget.setAction(WinBollNewsWidget.ACTION_RELOAD_REPORT);
- context.sendBroadcast(intentWidget);
- }
- } catch (IOException e) {
- LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
- }
+ Intent intentWidget = new Intent(context, APPNewsWidget.class);
+ intentWidget.setAction(APPNewsWidget.ACTION_RELOAD_REPORT);
+ context.sendBroadcast(intentWidget);
}
+
+
}
} else {
ToastUtils.show(szAction);
@@ -120,10 +110,8 @@ public class MainReceiver extends BroadcastReceiver {
public void registerAction(MainService service) {
IntentFilter filter=new IntentFilter();
filter.addAction(ACTION_BOOT_COMPLETED);
- filter.addAction(WinBoll.ACTION_SOS);
+ filter.addAction(SOS.ACTION_SOS);
filter.addAction(WinBoll.ACTION_BIND);
- filter.addAction(WinBoll.ACTION_SERVICE_ENABLE);
- filter.addAction(WinBoll.ACTION_SERVICE_DISABLE);
//filter.addAction(Intent.ACTION_BATTERY_CHANGED);
service.registerReceiver(this, filter);
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/services/MainService.java b/appbase/src/main/java/cc/winboll/studio/appbase/services/MainService.java
index 72b158a..41949ef 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/services/MainService.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/services/MainService.java
@@ -23,10 +23,10 @@ import cc.winboll.studio.appbase.handlers.MainServiceHandler;
import cc.winboll.studio.appbase.receivers.MainReceiver;
import cc.winboll.studio.appbase.services.AssistantService;
import cc.winboll.studio.appbase.threads.MainServiceThread;
-import cc.winboll.studio.appbase.widgets.WinBollNewsWidget;
+import cc.winboll.studio.appbase.widgets.APPNewsWidget;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.bean.APPNewsBean;
import java.util.ArrayList;
+import cc.winboll.studio.libappbase.sos.APPModel;
public class MainService extends Service {
@@ -45,7 +45,7 @@ public class MainService extends Service {
AssistantService mAssistantService;
boolean isBound = false;
MainReceiver mMainReceiver;
- ArrayList mSOSConnectionList;
+ ArrayList mAPPModelConnectionList;
@Override
public IBinder onBind(Intent intent) {
@@ -60,7 +60,7 @@ public class MainService extends Service {
public void onCreate() {
super.onCreate();
LogUtils.d(TAG, "onCreate()");
- mSOSConnectionList = new ArrayList();
+ mAPPModelConnectionList = new ArrayList();
_mControlCenterService = MainService.this;
isServiceRunning = false;
@@ -101,8 +101,8 @@ public class MainService extends Service {
}
// 启动小部件
- Intent intentTimeWidget = new Intent(this, WinBollNewsWidget.class);
- intentTimeWidget.setAction(WinBollNewsWidget.ACTION_RELOAD_REPORT);
+ Intent intentTimeWidget = new Intent(this, APPNewsWidget.class);
+ intentTimeWidget.setAction(APPNewsWidget.ACTION_RELOAD_REPORT);
this.sendBroadcast(intentTimeWidget);
startMainServiceThread();
@@ -117,21 +117,11 @@ public class MainService extends Service {
//
void wakeupAndBindAssistant() {
LogUtils.d(TAG, "wakeupAndBindAssistant()");
-// if (ServiceUtils.isServiceAlive(getApplicationContext(), AssistantService.class.getName()) == false) {
-// startService(new Intent(MainService.this, AssistantService.class));
-// //LogUtils.d(TAG, "call wakeupAndBindAssistant() : Binding... AssistantService");
-// bindService(new Intent(MainService.this, AssistantService.class), mMyServiceConnection, Context.BIND_IMPORTANT);
-// }
+
Intent intent = new Intent(this, AssistantService.class);
startService(intent);
// 绑定服务的Intent
- //Intent intent = new Intent(this, AssistantService.class);
bindService(intent, mMyServiceConnection, Context.BIND_IMPORTANT);
-
-// Intent intent = new Intent(this, AssistantService.class);
-// startService(intent);
-// LogUtils.d(TAG, "startService(intent)");
-// bindService(new Intent(this, AssistantService.class), mMyServiceConnection, Context.BIND_IMPORTANT);
}
// 开启提醒铃声线程
@@ -192,40 +182,40 @@ public class MainService extends Service {
}
}
- public void bindSOSConnection(APPNewsBean bean) {
- LogUtils.d(TAG, "bindSOSConnection(...)");
+ public void bindAPPModelConnection(APPModel bean) {
+ LogUtils.d(TAG, "bindAPPModelConnection(...)");
// 清理旧的绑定链接
- for (int i = mSOSConnectionList.size() - 1; i > -1; i--) {
- SOSConnection item = mSOSConnectionList.get(i);
- if (item.isBindToAPPSOSBean(bean)) {
+ for (int i = mAPPModelConnectionList.size() - 1; i > -1; i--) {
+ APPConnection item = mAPPModelConnectionList.get(i);
+ if (item.isBindToAPP(bean)) {
LogUtils.d(TAG, "Bind Servive exist.");
unbindService(item);
- mSOSConnectionList.remove(i);
+ mAPPModelConnectionList.remove(i);
}
}
// 绑定服务
- SOSConnection sosConnection = new SOSConnection();
+ APPConnection appConnection = new APPConnection();
Intent intentService = new Intent();
- intentService.setComponent(new ComponentName(bean.getNewsPackageName(), bean.getNewsClassName()));
- bindService(intentService, sosConnection, Context.BIND_IMPORTANT);
- mSOSConnectionList.add(sosConnection);
+ intentService.setComponent(new ComponentName(bean.getAppPackageName(), bean.getAppMainServiveName()));
+ bindService(intentService, appConnection, Context.BIND_IMPORTANT);
+ mAPPModelConnectionList.add(appConnection);
- Intent intentWidget = new Intent(this, WinBollNewsWidget.class);
- intentWidget.setAction(WinBollNewsWidget.ACTION_WAKEUP_SERVICE);
- APPNewsBean appSOSBean = new APPNewsBean(bean.getNewsPackageName(), bean.getNewsClassName());
+ Intent intentWidget = new Intent(this, APPNewsWidget.class);
+ intentWidget.setAction(APPNewsWidget.ACTION_WAKEUP_SERVICE);
+ APPModel appSOSBean = new APPModel(bean.getAppPackageName(), bean.getAppMainServiveName());
intentWidget.putExtra("APPSOSBean", appSOSBean.toString());
sendBroadcast(intentWidget);
}
- public class SOSConnection implements ServiceConnection {
+ public class APPConnection implements ServiceConnection {
ComponentName mComponentName;
- boolean isBindToAPPSOSBean(APPNewsBean bean) {
+ boolean isBindToAPP(APPModel bean) {
return mComponentName != null
- && mComponentName.getClassName().equals(bean.getNewsClassName())
- && mComponentName.getPackageName().equals(bean.getNewsPackageName());
+ && mComponentName.getClassName().equals(bean.getAppMainServiveName())
+ && mComponentName.getPackageName().equals(bean.getAppPackageName());
}
@Override
@@ -241,13 +231,13 @@ public class MainService extends Service {
LogUtils.d(TAG, String.format("onServiceDisconnected : \ngetClassName %s\ngetPackageName %s", name.getClassName(), name.getPackageName()));
// 尝试无参数启动一下服务
- String sosPackage = mComponentName.getPackageName();
- LogUtils.d(TAG, String.format("sosPackage %s", sosPackage));
- String sosClassName = mComponentName.getClassName();
- LogUtils.d(TAG, String.format("sosClassName %s", sosClassName));
+ String appPackage = mComponentName.getPackageName();
+ LogUtils.d(TAG, String.format("appPackage %s", appPackage));
+ String appMainServiceClassName = mComponentName.getClassName();
+ LogUtils.d(TAG, String.format("appMainServiceClassName %s", appMainServiceClassName));
Intent intentService = new Intent();
- intentService.setComponent(new ComponentName(sosPackage, sosClassName));
+ intentService.setComponent(new ComponentName(appPackage, appMainServiceClassName));
startService(intentService);
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/services/TestDemoBindService.java b/appbase/src/main/java/cc/winboll/studio/appbase/services/TestDemoBindService.java
new file mode 100644
index 0000000..a957afa
--- /dev/null
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/services/TestDemoBindService.java
@@ -0,0 +1,178 @@
+package cc.winboll.studio.appbase.services;
+
+/**
+ * @Author ZhanGSKen@AliYun.Com
+ * @Date 2025/03/07 12:45:49
+ * @Describe 启动时申请绑定到APPBase主服务的服务示例
+ */
+import android.app.Service;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Binder;
+import android.os.IBinder;
+import cc.winboll.studio.appbase.beans.TestDemoBindServiceBean;
+import cc.winboll.studio.libappbase.LogUtils;
+import cc.winboll.studio.libappbase.sos.WinBoll;
+import cc.winboll.studio.appbase.App;
+import cc.winboll.studio.libappbase.sos.SOS;
+
+public class TestDemoBindService extends Service {
+
+ public static final String TAG = "TestDemoBindService";
+
+ public static final String ACTION_ENABLE = TestDemoBindService.class.getName() + ".ACTION_ENABLE";
+ public static final String ACTION_DISABLE = TestDemoBindService.class.getName() + ".ACTION_DISABLE";
+
+ volatile static TestThread _TestThread;
+
+ volatile static boolean _IsRunning;
+
+ public synchronized static void setIsRunning(boolean isRunning) {
+ _IsRunning = isRunning;
+ }
+
+ public static boolean isRunning() {
+ return _IsRunning;
+ }
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ return new MyBinder();
+ }
+
+ public class MyBinder extends Binder {
+ public TestDemoBindService getService() {
+ return TestDemoBindService.this;
+ }
+ }
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ LogUtils.d(TAG, "onCreate()");
+
+ run();
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ LogUtils.d(TAG, "onStartCommand(...)");
+ TestDemoBindServiceBean bean = TestDemoBindServiceBean.loadBean(this, TestDemoBindServiceBean.class);
+ if (bean == null) {
+ bean = new TestDemoBindServiceBean();
+ }
+
+ if (intent.getAction() != null) {
+ if (intent.getAction().equals(ACTION_ENABLE)) {
+ bean.setIsEnable(true);
+ LogUtils.d(TAG, "setIsEnable(true);");
+ TestDemoBindServiceBean.saveBean(this, bean);
+ } else if (intent.getAction().equals(ACTION_DISABLE)) {
+ bean.setIsEnable(false);
+ LogUtils.d(TAG, "setIsEnable(false);");
+ TestDemoBindServiceBean.saveBean(this, bean);
+ }
+ }
+
+ run();
+
+ return (bean.isEnable()) ? START_STICKY : super.onStartCommand(intent, flags, startId);
+ //return super.onStartCommand(intent, flags, startId);
+ }
+
+ void run() {
+ LogUtils.d(TAG, "run()");
+ TestDemoBindServiceBean bean = TestDemoBindServiceBean.loadBean(this, TestDemoBindServiceBean.class);
+ if (bean == null) {
+ bean = new TestDemoBindServiceBean();
+ TestDemoBindServiceBean.saveBean(this, bean);
+ }
+ if (bean.isEnable()) {
+ LogUtils.d(TAG, "run() bean.isEnable()");
+ TestThread.getInstance(this).start();
+ LogUtils.d(TAG, "_TestThread.start()");
+ }
+ }
+
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ LogUtils.d(TAG, "onDestroy()");
+ TestDemoBindServiceBean bean = TestDemoBindServiceBean.loadBean(this, TestDemoBindServiceBean.class);
+ if (bean == null) {
+ bean = new TestDemoBindServiceBean();
+ }
+
+ TestThread.getInstance(this).setIsExit(true);
+
+ // 预防 APPBase 应用重启绑定失效。
+ // 所以退出时检查本服务是否配置启用,如果启用就发送一个 SOS 信号。
+ // 这样 APPBase 就会用组件方式启动本服务。
+ if (bean.isEnable()) {
+ if (App.isDebuging()) {
+ SOS.sosToAppBaseBeta(this, TestDemoBindService.class.getName());
+ } else {
+ SOS.sosToAppBase(this, TestDemoBindService.class.getName());
+ }
+ }
+
+ _IsRunning = false;
+ }
+
+ static class TestThread extends Thread {
+
+ volatile static TestThread _TestThread;
+ Context mContext;
+ volatile boolean isStarted = false;
+ volatile boolean isExit = false;
+
+ TestThread(Context context) {
+ super();
+ mContext = context;
+ }
+
+ public static synchronized TestThread getInstance(Context context) {
+ if (_TestThread != null) {
+ _TestThread.setIsExit(true);
+ }
+ _TestThread = new TestThread(context);
+
+ return _TestThread;
+ }
+
+ public synchronized void setIsExit(boolean isExit) {
+ this.isExit = isExit;
+ }
+
+ public boolean isExit() {
+ return isExit;
+ }
+
+ @Override
+ public void run() {
+ if (isStarted == false) {
+ isStarted = true;
+ super.run();
+ LogUtils.d(TAG, "run() start");
+ if (App.isDebuging()) {
+ WinBoll.bindToAPPBaseBeta(mContext, TestDemoBindService.class.getName());
+ } else {
+ WinBoll.bindToAPPBase(mContext, TestDemoBindService.class.getName());
+ }
+
+ while (!isExit()) {
+ LogUtils.d(TAG, "run()");
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ LogUtils.d(TAG, e, Thread.currentThread().getStackTrace());
+ }
+ }
+
+ LogUtils.d(TAG, "run() exit");
+ }
+ }
+ }
+}
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/services/TestService.java b/appbase/src/main/java/cc/winboll/studio/appbase/services/TestDemoService.java
similarity index 68%
rename from libappbase/src/main/java/cc/winboll/studio/libappbase/services/TestService.java
rename to appbase/src/main/java/cc/winboll/studio/appbase/services/TestDemoService.java
index 1e627db..4739f9c 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/services/TestService.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/services/TestDemoService.java
@@ -1,22 +1,25 @@
-package cc.winboll.studio.libappbase.services;
+package cc.winboll.studio.appbase.services;
/**
* @Author ZhanGSKen@AliYun.Com
- * @Date 2025/02/15 20:48:36
- * @Describe TestService
+ * @Date 2025/03/07 12:39:24
+ * @Describe 普通服务示例
*/
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
+import cc.winboll.studio.appbase.beans.TestDemoServiceBean;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.bean.TestServiceBean;
import cc.winboll.studio.libappbase.sos.WinBoll;
-public class TestService extends Service {
+public class TestDemoService extends Service {
- public static final String TAG = "TestService";
+ public static final String TAG = "TestDemoService";
+
+ public static final String ACTION_ENABLE = TestDemoService.class.getName() + ".ACTION_ENABLE";
+ public static final String ACTION_DISABLE = TestDemoService.class.getName() + ".ACTION_DISABLE";
volatile static TestThread _TestThread;
@@ -36,8 +39,8 @@ public class TestService extends Service {
}
public class MyBinder extends Binder {
- public TestService getService() {
- return TestService.this;
+ public TestDemoService getService() {
+ return TestDemoService.this;
}
}
@@ -53,29 +56,35 @@ public class TestService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
LogUtils.d(TAG, "onStartCommand(...)");
- TestServiceBean bean = TestServiceBean.loadBean(this, TestServiceBean.class);
+ TestDemoServiceBean bean = TestDemoServiceBean.loadBean(this, TestDemoServiceBean.class);
if (bean == null) {
- bean = new TestServiceBean();
+ bean = new TestDemoServiceBean();
}
-// if (intent.getAction() != null && intent.getAction().equals(WinBoll.ACTION_SERVICE_ENABLE)) {
-// bean.setIsEnable(true);
-// TestServiceBean.saveBean(this, bean);
-// run();
-// } else if (intent.getAction() != null && intent.getAction().equals(WinBoll.ACTION_SERVICE_DISABLE)) {
-// bean.setIsEnable(false);
-// TestServiceBean.saveBean(this, bean);
-// }
- LogUtils.d(TAG, String.format("TestServiceBean.saveBean setIsEnable %s", bean.isEnable()));
+
+ if (intent.getAction() != null) {
+ if (intent.getAction().equals(ACTION_ENABLE)) {
+ bean.setIsEnable(true);
+ LogUtils.d(TAG, "setIsEnable(true);");
+ TestDemoServiceBean.saveBean(this, bean);
+ } else if (intent.getAction().equals(ACTION_DISABLE)) {
+ bean.setIsEnable(false);
+ LogUtils.d(TAG, "setIsEnable(false);");
+ TestDemoServiceBean.saveBean(this, bean);
+ }
+ }
+
+ run();
+
return (bean.isEnable()) ? START_STICKY : super.onStartCommand(intent, flags, startId);
//return super.onStartCommand(intent, flags, startId);
}
void run() {
LogUtils.d(TAG, "run()");
- TestServiceBean bean = TestServiceBean.loadBean(this, TestServiceBean.class);
+ TestDemoServiceBean bean = TestDemoServiceBean.loadBean(this, TestDemoServiceBean.class);
if (bean == null) {
- bean = new TestServiceBean();
- TestServiceBean.saveBean(this, bean);
+ bean = new TestDemoServiceBean();
+ TestDemoServiceBean.saveBean(this, bean);
}
if (bean.isEnable()) {
LogUtils.d(TAG, "run() bean.isEnable()");
@@ -90,7 +99,7 @@ public class TestService extends Service {
super.onDestroy();
LogUtils.d(TAG, "onDestroy()");
TestThread.getInstance(this).setIsExit(true);
-
+
_IsRunning = false;
}
@@ -129,7 +138,6 @@ public class TestService extends Service {
isStarted = true;
super.run();
LogUtils.d(TAG, "run() start");
- WinBoll.bindToAPPBase(mContext, new APPNewsBean(mContext.getPackageName(), TestService.class.getName()));
while (!isExit()) {
LogUtils.d(TAG, "run()");
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/widgets/WinBollNewsWidget.java b/appbase/src/main/java/cc/winboll/studio/appbase/widgets/APPNewsWidget.java
similarity index 78%
rename from appbase/src/main/java/cc/winboll/studio/appbase/widgets/WinBollNewsWidget.java
rename to appbase/src/main/java/cc/winboll/studio/appbase/widgets/APPNewsWidget.java
index 65e0c76..fa3da6e 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/widgets/WinBollNewsWidget.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/widgets/APPNewsWidget.java
@@ -15,18 +15,19 @@ import cc.winboll.studio.appbase.R;
import cc.winboll.studio.appbase.beans.WinBollNewsBean;
import cc.winboll.studio.libappbase.AppUtils;
import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.bean.APPNewsBean;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
+import cc.winboll.studio.libappbase.sos.APPModel;
+import cc.winboll.studio.libappbase.sos.WinBoll;
-public class WinBollNewsWidget extends AppWidgetProvider {
+public class APPNewsWidget extends AppWidgetProvider {
- public static final String TAG = "WinBollNewsWidget";
+ public static final String TAG = "APPNewsWidget";
- public static final String ACTION_WAKEUP_SERVICE = "cc.winboll.studio.appbase.widgets.WinBollNewsWidget.ACTION_WAKEUP_SERVICE";
- public static final String ACTION_RELOAD_REPORT = "cc.winboll.studio.appbase.widgets.WinBollNewsWidget.ACTION_RELOAD_REPORT";
+ public static final String ACTION_WAKEUP_SERVICE = APPNewsWidget.class.getName() + ".ACTION_WAKEUP_SERVICE";
+ public static final String ACTION_RELOAD_REPORT = APPNewsWidget.class.getName() + ".ACTION_RELOAD_REPORT";
volatile static ArrayList _WinBollNewsBeanList;
@@ -49,25 +50,25 @@ public class WinBollNewsWidget extends AppWidgetProvider {
if (intent.getAction().equals(ACTION_RELOAD_REPORT)) {
LogUtils.d(TAG, "ACTION_RELOAD_REPORT");
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
- int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, WinBollNewsWidget.class));
+ int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, APPNewsWidget.class));
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
}else if (intent.getAction().equals(ACTION_WAKEUP_SERVICE)) {
LogUtils.d(TAG, "ACTION_WAKEUP_SERVICE");
- String szWinBollNewsBean = intent.getStringExtra("WinBollNewsBean");
- LogUtils.d(TAG, String.format("szWinBollNewsBean %s", szWinBollNewsBean));
- if (szWinBollNewsBean != null && !szWinBollNewsBean.equals("")) {
+ String szAPPModel = intent.getStringExtra(WinBoll.EXTRA_APPMODEL);
+ LogUtils.d(TAG, String.format("szAPPModel %s", szAPPModel));
+ if (szAPPModel != null && !szAPPModel.equals("")) {
try {
- APPNewsBean bean = APPNewsBean.parseStringToBean(szWinBollNewsBean, APPNewsBean.class);
+ APPModel bean = APPModel.parseStringToBean(szAPPModel, APPModel.class);
if (bean != null) {
- String szNewsPackageName = bean.getNewsPackageName();
- LogUtils.d(TAG, String.format("szNewsPackageName %s", szNewsPackageName));
- String szNewsClassName = bean.getNewsClassName();
- LogUtils.d(TAG, String.format("szNewsClassName %s", szNewsClassName));
+ String szAppPackageName = bean.getAppPackageName();
+ LogUtils.d(TAG, String.format("szAppPackageName %s", szAppPackageName));
+ String szAppMainServiveName = bean.getAppMainServiveName();
+ LogUtils.d(TAG, String.format("szAppMainServiveName %s", szAppMainServiveName));
- String appName = AppUtils.getAppNameByPackageName(context, szNewsPackageName);
+ String appName = AppUtils.getAppNameByPackageName(context, szAppPackageName);
LogUtils.d(TAG, String.format("appName %s", appName));
WinBollNewsBean winBollNewsBean = new WinBollNewsBean(appName);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
@@ -82,7 +83,7 @@ public class WinBollNewsWidget extends AppWidgetProvider {
addWinBollNewsBean(context, winBollNewsBean);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
- int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, WinBollNewsWidget.class));
+ int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, APPNewsWidget.class));
for (int appWidgetId : appWidgetIds) {
updateAppWidget(context, appWidgetManager, appWidgetId);
}
@@ -123,12 +124,12 @@ public class WinBollNewsWidget extends AppWidgetProvider {
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_news);
//设置按钮点击事件
- Intent intentPre = new Intent(context, WinBollNewsWidgetClickListener.class);
- intentPre.setAction(WinBollNewsWidgetClickListener.ACTION_PRE);
+ Intent intentPre = new Intent(context, APPNewsWidgetClickListener.class);
+ intentPre.setAction(APPNewsWidgetClickListener.ACTION_PRE);
PendingIntent pendingIntentPre = PendingIntent.getBroadcast(context, 0, intentPre, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.widget_button_pre, pendingIntentPre);
- Intent intentNext = new Intent(context, WinBollNewsWidgetClickListener.class);
- intentNext.setAction(WinBollNewsWidgetClickListener.ACTION_NEXT);
+ Intent intentNext = new Intent(context, APPNewsWidgetClickListener.class);
+ intentNext.setAction(APPNewsWidgetClickListener.ACTION_NEXT);
PendingIntent pendingIntentNext = PendingIntent.getBroadcast(context, 0, intentNext, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.widget_button_next, pendingIntentNext);
@@ -156,8 +157,8 @@ public class WinBollNewsWidget extends AppWidgetProvider {
if (_CurrentPageIndex > 0) {
_CurrentPageIndex = _CurrentPageIndex - 1;
}
- Intent intentWidget = new Intent(context, WinBollNewsWidget.class);
- intentWidget.setAction(WinBollNewsWidget.ACTION_RELOAD_REPORT);
+ Intent intentWidget = new Intent(context, APPNewsWidget.class);
+ intentWidget.setAction(APPNewsWidget.ACTION_RELOAD_REPORT);
context.sendBroadcast(intentWidget);
}
}
@@ -167,8 +168,8 @@ public class WinBollNewsWidget extends AppWidgetProvider {
if ((_CurrentPageIndex + 1) * _OnePageLinesCount < _WinBollNewsBeanList.size()) {
_CurrentPageIndex = _CurrentPageIndex + 1;
}
- Intent intentWidget = new Intent(context, WinBollNewsWidget.class);
- intentWidget.setAction(WinBollNewsWidget.ACTION_RELOAD_REPORT);
+ Intent intentWidget = new Intent(context, APPNewsWidget.class);
+ intentWidget.setAction(APPNewsWidget.ACTION_RELOAD_REPORT);
context.sendBroadcast(intentWidget);
}
}
diff --git a/appbase/src/main/java/cc/winboll/studio/appbase/widgets/WinBollNewsWidgetClickListener.java b/appbase/src/main/java/cc/winboll/studio/appbase/widgets/APPNewsWidgetClickListener.java
similarity index 62%
rename from appbase/src/main/java/cc/winboll/studio/appbase/widgets/WinBollNewsWidgetClickListener.java
rename to appbase/src/main/java/cc/winboll/studio/appbase/widgets/APPNewsWidgetClickListener.java
index 3ddf296..bfe263f 100644
--- a/appbase/src/main/java/cc/winboll/studio/appbase/widgets/WinBollNewsWidgetClickListener.java
+++ b/appbase/src/main/java/cc/winboll/studio/appbase/widgets/APPNewsWidgetClickListener.java
@@ -10,11 +10,11 @@ import android.content.Context;
import android.content.Intent;
import cc.winboll.studio.libappbase.LogUtils;
-public class WinBollNewsWidgetClickListener extends BroadcastReceiver {
+public class APPNewsWidgetClickListener extends BroadcastReceiver {
- public static final String TAG = "WinBollNewsWidgetClickListener";
- public static final String ACTION_PRE = "cc.winboll.studio.appbase.widgets.WinBollNewsWidgetClickListener.ACTION_PRE";
- public static final String ACTION_NEXT = "cc.winboll.studio.appbase.widgets.WinBollNewsWidgetClickListener.ACTION_NEXT";
+ public static final String TAG = "APPNewsWidgetClickListener";
+ public static final String ACTION_PRE = APPNewsWidgetClickListener.class.getName() + ".ACTION_PRE";
+ public static final String ACTION_NEXT = APPNewsWidgetClickListener.class.getName() + ".ACTION_NEXT";
@Override
public void onReceive(Context context, Intent intent) {
@@ -25,10 +25,10 @@ public class WinBollNewsWidgetClickListener extends BroadcastReceiver {
}
if (action.equals(ACTION_PRE)) {
LogUtils.d(TAG, "ACTION_PRE");
- WinBollNewsWidget.prePage(context);
+ APPNewsWidget.prePage(context);
} else if (action.equals(ACTION_NEXT)) {
LogUtils.d(TAG, "ACTION_NEXT");
- WinBollNewsWidget.nextPage(context);
+ APPNewsWidget.nextPage(context);
} else {
LogUtils.d(TAG, String.format("action %s", action));
}
diff --git a/appbase/src/main/res/layout/activity_main.xml b/appbase/src/main/res/layout/activity_main.xml
index a17706a..3cca484 100644
--- a/appbase/src/main/res/layout/activity_main.xml
+++ b/appbase/src/main/res/layout/activity_main.xml
@@ -1,149 +1,194 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
-
-
-
-
-
+ android:layout_weight="1.0">
-
-
-
-
-
-
-
-
+ android:orientation="vertical"
+ android:gravity="center">
+ android:layout_height="0dp"
+ android:layout_weight="1.0"
+ android:gravity="center_horizontal">
-
+
+
+
+
+ android:layout_height="wrap_content"
+ android:gravity="right|center_vertical">
+
+
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="right">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:onClick="onStopCenter"/>
+ android:onClick="onTestStopMainServiceWithoutSettingEnable"/>
+ android:onClick="onTestUseComponentStartService"/>
+
+
-
+
-
-
-
-
-
-
-
-
-
+
-
+
-
-
-
+
diff --git a/build.gradle b/build.gradle
index 17875d0..4d5b285 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,6 +1,12 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
+ // Nexus Maven 库地址
+ // "WinBoll Release"
+ maven { url "https://nexus.winboll.cc/repository/maven-public/" }
+ // "WinBoll Snapshot"
+ maven { url "https://nexus.winboll.cc/repository/maven-snapshots/" }
+
maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://maven.aliyun.com/repository/google/' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin/' }
@@ -10,12 +16,6 @@ buildscript {
mavenCentral()
google()
mavenLocal()
- // Nexus Maven 库地址
- // "WinBoll Release"
- maven { url "https://nexus.winboll.cc/repository/maven-public/" }
- // "WinBoll Snapshot"
- maven { url "https://nexus.winboll.cc/repository/maven-snapshots/" }
-
}
dependencies {
classpath 'com.android.tools.build:gradle:7.2.1'
@@ -26,6 +26,12 @@ buildscript {
allprojects {
repositories {
+ // Nexus Maven 库地址
+ // "WinBoll Release"
+ maven { url "https://nexus.winboll.cc/repository/maven-public/" }
+ // "WinBoll Snapshot"
+ maven { url "https://nexus.winboll.cc/repository/maven-snapshots/" }
+
maven {
url "https://mirrors.tencent.com/repository/maven/tencent_public/"
}
@@ -42,12 +48,6 @@ allprojects {
mavenCentral()
google()
mavenLocal()
- // Nexus Maven 库地址
- // "WinBoll Release"
- maven { url "https://nexus.winboll.cc/repository/maven-public/" }
- // "WinBoll Snapshot"
- maven { url "https://nexus.winboll.cc/repository/maven-snapshots/" }
-
}
ext {
// 定义全局变量,常用于版本管理
diff --git a/libappbase/build.gradle b/libappbase/build.gradle
index 4126ea5..1e0359f 100644
--- a/libappbase/build.gradle
+++ b/libappbase/build.gradle
@@ -22,6 +22,10 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
+ // SSH
+ implementation 'com.jcraft:jsch:0.1.55'
+ // Html 解析
+ implementation 'org.jsoup:jsoup:1.13.1'
// 二维码类库
implementation 'com.google.zxing:core:3.4.1'
implementation 'com.journeyapps:zxing-android-embedded:3.6.0'
diff --git a/libappbase/build.properties b/libappbase/build.properties
index f9f7a0e..697cc65 100644
--- a/libappbase/build.properties
+++ b/libappbase/build.properties
@@ -1,8 +1,8 @@
#Created by .winboll/winboll_app_build.gradle
-#Thu Feb 27 02:21:32 GMT 2025
-stageCount=3
+#Sat Mar 08 02:31:02 HKT 2025
+stageCount=2
libraryProject=libappbase
-baseVersion=2.0
-publishVersion=2.0.2
-buildCount=4
-baseBetaVersion=2.0.3
+baseVersion=2.1
+publishVersion=2.1.1
+buildCount=0
+baseBetaVersion=2.1.2
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/IWinBollActivity.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/IWinBollActivity.java
deleted file mode 100644
index fe51ef8..0000000
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/IWinBollActivity.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package cc.winboll.studio.libappbase;
-
-/**
- * @Author ZhanGSKen@QQ.COM
- * @Date 2025/02/04 10:20:16
- * @Describe WinBoll Activity 接口
- */
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
-import cc.winboll.studio.libappbase.bean.APPInfo;
-
-public interface IWinBollActivity {
-
- public static final String TAG = "IWinBollActivity";
-
- // 获取当前具有 IWinBoll 特征的 AppCompatActivity 活动窗口
- AppCompatActivity getActivity();
-
- abstract public APPInfo getAppInfo();
- abstract public String getTag();
- abstract Toolbar initToolBar();
- abstract boolean isEnableDisplayHomeAsUp();
- abstract boolean isAddWinBollToolBar();
-}
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/LogActivity.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/LogActivity.java
deleted file mode 100644
index f20061a..0000000
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/LogActivity.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package cc.winboll.studio.libappbase;
-
-/**
- * @Author ZhanGSKen@QQ.COM
- * @Date 2024/08/12 15:07:58
- * @Describe WinBoll 应用日志窗口
- */
-import android.os.Bundle;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.appcompat.widget.Toolbar;
-import cc.winboll.studio.libappbase.GlobalApplication;
-import cc.winboll.studio.libappbase.LogUtils;
-import cc.winboll.studio.libappbase.bean.APPInfo;
-import cc.winboll.studio.libappbase.R;
-
-public class LogActivity extends AppCompatActivity implements IWinBollActivity {
-
- public static final String TAG = "LogActivity";
-
- LogView mLogView;
-
- @Override
- public AppCompatActivity getActivity() {
- return this;
- }
-
- @Override
- public APPInfo getAppInfo() {
- return null;
- }
-
- @Override
- public String getTag() {
- return TAG;
- }
-
- @Override
- public Toolbar initToolBar() {
- return null;
- }
-
- @Override
- public boolean isEnableDisplayHomeAsUp() {
- return false;
- }
-
- @Override
- public boolean isAddWinBollToolBar() {
- return false;
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- LogUtils.d(TAG, "onCreate");
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_log);
- mLogView = findViewById(R.id.logview);
-
- if (GlobalApplication.isDebuging()) { mLogView.start(); }
- }
-
- @Override
- protected void onResume() {
- LogUtils.d(TAG, "onResume");
- super.onResume();
- mLogView.start();
- }
-}
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/bean/APPInfo.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/bean/APPInfo.java
deleted file mode 100644
index ef4c3a8..0000000
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/bean/APPInfo.java
+++ /dev/null
@@ -1,142 +0,0 @@
-package cc.winboll.studio.libappbase.bean;
-
-/**
- * @Author ZhanGSKen@QQ.COM
- * @Date 2025/01/20 14:19:02
- * @Describe 应用信息类
- */
-import cc.winboll.studio.libappbase.R;
-import java.io.Serializable;
-
-public class APPInfo implements Serializable {
-
- public static final String TAG = "APPInfo";
-
- // 应用名称
- String appName;
- // 应用图标
- int appIcon;
- // 应用描述
- String appDescription;
- // 应用Git仓库地址
- String appGitName;
- // 应用Git仓库拥有者
- String appGitOwner;
- // 应用Git仓库分支
- String appGitAPPBranch;
- // 应用Git仓库子项目文件夹
- String appGitAPPSubProjectFolder;
- // 应用主页
- String appHomePage;
- // 应用包名称
- String appAPKName;
- // 应用包存储文件夹名称
- String appAPKFolderName;
-
- public APPInfo(String appName, int appIcon, String appDescription, String appGitName, String appGitOwner, String appGitAPPBranch, String appGitAPPSubProjectFolder, String appHomePage, String appAPKName, String appAPKFolderName) {
- this.appName = appName;
- this.appIcon = appIcon;
- this.appDescription = appDescription;
- this.appGitName = appGitName;
- this.appGitOwner = appGitOwner;
- this.appGitAPPBranch = appGitAPPBranch;
- this.appGitAPPSubProjectFolder = appGitAPPSubProjectFolder;
- this.appHomePage = appHomePage;
- this.appAPKName = appAPKName;
- this.appAPKFolderName = appAPKFolderName;
- }
-
- public APPInfo() {
- this.appName = "WinBoll-APP";
- this.appIcon = R.drawable.ic_launcher;
- this.appDescription = "WinBoll APP";
- this.appGitName = "APP";
- this.appGitOwner = "Studio";
- this.appGitAPPBranch = "app";
- this.appGitAPPSubProjectFolder = "app";
- this.appHomePage = "https://www.winboll.cc/studio/details.php?app=APP";
- this.appAPKName = "APP";
- this.appAPKFolderName = "APP";
- }
-
- public void setAppGitOwner(String appGitOwner) {
- this.appGitOwner = appGitOwner;
- }
-
- public String getAppGitOwner() {
- return appGitOwner;
- }
-
- public void setAppGitAPPBranch(String appGitAPPBranch) {
- this.appGitAPPBranch = appGitAPPBranch;
- }
-
- public String getAppGitAPPBranch() {
- return appGitAPPBranch;
- }
-
- public void setAppGitAPPSubProjectFolder(String appGitAPPSubProjectFolder) {
- this.appGitAPPSubProjectFolder = appGitAPPSubProjectFolder;
- }
-
- public String getAppGitAPPSubProjectFolder() {
- return appGitAPPSubProjectFolder;
- }
-
- public void setAppIcon(int appIcon) {
- this.appIcon = appIcon;
- }
-
- public int getAppIcon() {
- return appIcon;
- }
-
- public void setAppDescription(String appDescription) {
- this.appDescription = appDescription;
- }
-
- public String getAppDescription() {
- return appDescription;
- }
-
- public void setAppAPKFolderName(String appAPKFolderName) {
- this.appAPKFolderName = appAPKFolderName;
- }
-
- public String getAppAPKFolderName() {
- return appAPKFolderName;
- }
-
- public void setAppName(String appName) {
- this.appName = appName;
- }
-
- public String getAppName() {
- return appName;
- }
-
- public void setAppGitName(String appGitName) {
- this.appGitName = appGitName;
- }
-
- public String getAppGitName() {
- return appGitName;
- }
-
- public void setAppHomePage(String appHomePage) {
- this.appHomePage = appHomePage;
- }
-
- public String getAppHomePage() {
- return appHomePage;
- }
-
- public void setAppAPKName(String appAPKName) {
- this.appAPKName = appAPKName;
- }
-
- public String getAppAPKName() {
- return appAPKName;
- }
-}
-
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOS.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOS.java
index fbaeda5..fc48a28 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOS.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOS.java
@@ -34,13 +34,13 @@ public class SOS {
static void sos(Context context, String szToPackage, String sosService) {
LogUtils.d(TAG, "sos(...)");
Intent intent = new Intent(ACTION_SOS);
- intent.putExtra(EXTRA_OBJECT, genSOSObjectString(context.getPackageName(), sosService));
+ intent.putExtra(EXTRA_OBJECT, genSOSObject(context.getPackageName(), sosService));
intent.setPackage(szToPackage);
LogUtils.d(TAG, String.format("ACTION_SOS :\nTo Package : %sSOS Service : %s\n", szToPackage, sosService));
context.sendBroadcast(intent);
}
- static SOSObject stringToSOSObject(String szSOSObject) {
+ public static SOSObject parseSOSObject(String szSOSObject) {
try {
return SOSObject.parseStringToBean(szSOSObject, SOSObject.class);
} catch (IOException e) {
@@ -49,11 +49,11 @@ public class SOS {
return null;
}
- static String sosObjectToString(SOSObject object) {
+ public static String sosObjectToString(SOSObject object) {
return object.toString();
}
- static String genSOSObjectString(String objectPackageName, String objectServiveName) {
+ public static String genSOSObject(String objectPackageName, String objectServiveName) {
return (new SOSObject(objectPackageName, objectServiveName)).toString();
}
}
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOSCenterService.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOSCenterService.java
index 896d529..d76b036 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOSCenterService.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOSCenterService.java
@@ -1,9 +1,5 @@
package cc.winboll.studio.libappbase.sos;
-import android.app.Service;
-import android.content.Intent;
-import android.os.IBinder;
-
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/02/27 14:00:21
@@ -17,8 +13,11 @@ import android.os.IBinder;
import android.os.IInterface;
import android.os.Parcel;
import android.os.RemoteException;
-import cc.winboll.studio.libappbase.bean.SimpleOperateSignalCenterServiceBean;
import java.io.FileDescriptor;
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import cc.winboll.studio.libappbase.LogUtils;
public class SOSCenterService extends Service {
@@ -26,7 +25,7 @@ public class SOSCenterService extends Service {
private final IBinder binder =(IBinder)new SOSBinder();
- SimpleOperateSignalCenterServiceBean mSimpleOperateSignalCenterServiceBean;
+ SOSCenterServiceModel mSOSCenterServiceModel;
static MainThread _MainThread;
public static synchronized MainThread getMainThreadInstance() {
if (_MainThread == null) {
@@ -85,8 +84,8 @@ public class SOSCenterService extends Service {
}
public static final String TAG = "SOSBinder";
- SimpleOperateSignalCenterService getService() {
- return SimpleOperateSignalCenterService.this;
+ SOSCenterService getService() {
+ return SOSCenterService.this;
}
}
@@ -94,10 +93,10 @@ public class SOSCenterService extends Service {
public void onCreate() {
super.onCreate();
LogUtils.d(TAG, "onCreate");
- mSimpleOperateSignalCenterServiceBean = SimpleOperateSignalCenterServiceBean.loadBean(this, SimpleOperateSignalCenterServiceBean.class);
- if(mSimpleOperateSignalCenterServiceBean == null) {
- mSimpleOperateSignalCenterServiceBean = new SimpleOperateSignalCenterServiceBean();
- SimpleOperateSignalCenterServiceBean.saveBean(this, mSimpleOperateSignalCenterServiceBean);
+ mSOSCenterServiceModel = SOSCenterServiceModel.loadBean(this, SOSCenterServiceModel.class);
+ if(mSOSCenterServiceModel == null) {
+ mSOSCenterServiceModel = new SOSCenterServiceModel();
+ SOSCenterServiceModel.saveBean(this, mSOSCenterServiceModel);
}
runMainThread();
}
@@ -108,12 +107,12 @@ public class SOSCenterService extends Service {
runMainThread();
- return mSimpleOperateSignalCenterServiceBean.isEnable() ? Service.START_STICKY: super.onStartCommand(intent, flags, startId);
+ return mSOSCenterServiceModel.isEnable() ? Service.START_STICKY: super.onStartCommand(intent, flags, startId);
}
void runMainThread() {
- mSimpleOperateSignalCenterServiceBean = SimpleOperateSignalCenterServiceBean.loadBean(this, SimpleOperateSignalCenterServiceBean.class);
- if (mSimpleOperateSignalCenterServiceBean.isEnable()
+ mSOSCenterServiceModel = mSOSCenterServiceModel.loadBean(this, SOSCenterServiceModel.class);
+ if (mSOSCenterServiceModel.isEnable()
&& _MainThread == null) {
getMainThreadInstance().start();
}
@@ -123,9 +122,9 @@ public class SOSCenterService extends Service {
public void onDestroy() {
super.onDestroy();
LogUtils.d(TAG, "onDestroy");
- mSimpleOperateSignalCenterServiceBean = SimpleOperateSignalCenterServiceBean.loadBean(this, SimpleOperateSignalCenterServiceBean.class);
- if (mSimpleOperateSignalCenterServiceBean.isEnable()) {
- LogUtils.d(TAG, "mSimpleOperateSignalCenterServiceBean.isEnable()");
+ mSOSCenterServiceModel = SOSCenterServiceModel.loadBean(this, SOSCenterServiceModel.class);
+ if (mSOSCenterServiceModel.isEnable()) {
+ LogUtils.d(TAG, "mSOSCenterServiceModel.isEnable()");
// ISOSAPP iSOSAPP = (ISOSAPP)getApplication();
// iSOSAPP.helpISOSService(getISOSServiceIntentWhichAskForHelp());
}
@@ -137,22 +136,22 @@ public class SOSCenterService extends Service {
public static void stopISOSService(Context context) {
LogUtils.d(TAG, "stopISOSService");
- SimpleOperateSignalCenterServiceBean bean = new SimpleOperateSignalCenterServiceBean();
+ SOSCenterServiceModel bean = new SOSCenterServiceModel();
bean.setIsEnable(false);
- SimpleOperateSignalCenterServiceBean.saveBean(context, bean);
- context.stopService(new Intent(context, SimpleOperateSignalCenterService.class));
+ SOSCenterServiceModel.saveBean(context, bean);
+ context.stopService(new Intent(context, SOSCenterServiceModel.class));
}
public static void startISOSService(Context context) {
LogUtils.d(TAG, "startISOSService");
- SimpleOperateSignalCenterServiceBean bean = new SimpleOperateSignalCenterServiceBean();
+ SOSCenterServiceModel bean = new SOSCenterServiceModel();
bean.setIsEnable(true);
- SimpleOperateSignalCenterServiceBean.saveBean(context, bean);
- context.startService(new Intent(context, SimpleOperateSignalCenterService.class));
+ SOSCenterServiceModel.saveBean(context, bean);
+ context.startService(new Intent(context, SOSCenterServiceModel.class));
}
public String getMessage() {
- return "Hello from SimpleOperateSignalCenterService";
+ return "Hello from SOSCenterServiceModel";
}
static class MainThread extends Thread {
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOSCenterServiceReceiver.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOSCenterServiceReceiver.java
index 056ce33..4464a0c 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOSCenterServiceReceiver.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/SOSCenterServiceReceiver.java
@@ -1,24 +1,25 @@
package cc.winboll.studio.libappbase.sos;
-
-
/**
* @Author ZhanGSKen@AliYun.Com
* @Date 2025/02/27 14:04:35
* @Describe SOSCenterServiceReceiver
*/
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import cc.winboll.studio.libappbase.LogUtils;
+
public class SOSCenterServiceReceiver extends BroadcastReceiver {
public static final String TAG = "SOSCenterServiceReceiver";
public static final String ACTION_SOS = SOSCenterServiceReceiver.class.getName() + ".ACTION_SOS";
- public static final String
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ACTION_SOS)) {
-
// 处理接收到的广播消息
LogUtils.d(TAG, String.format("Action %s \n%s\n%s", action));
} else {
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/WinBoll.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/WinBoll.java
index 2ded607..f826b7b 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/WinBoll.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/sos/WinBoll.java
@@ -14,14 +14,16 @@ public class WinBoll {
public static final String TAG = "WinBoll";
public static final String ACTION_BIND = WinBoll.class.getName() + ".ACTION_BIND";
- public static final String EXTRA_APPMODEL = "EXTRA_APP";
+ public static final String EXTRA_APPMODEL = "EXTRA_APPMODEL";
public static void bindToAPPBase(Context context, String appMainService) {
+ LogUtils.d(TAG, "bindToAPPBase(...)");
String toPackage = "cc.winboll.studio.appbase";
startBind(context, toPackage, appMainService);
}
public static void bindToAPPBaseBeta(Context context, String appMainService) {
+ LogUtils.d(TAG, "bindToAPPBaseBeta(...)");
String toPackage = "cc.winboll.studio.appbase.beta";
startBind(context, toPackage, appMainService);
}
diff --git a/libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/StatusWidget.java b/libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/StatusWidget.java
index a4a2eee..389b346 100644
--- a/libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/StatusWidget.java
+++ b/libappbase/src/main/java/cc/winboll/studio/libappbase/widgets/StatusWidget.java
@@ -17,7 +17,6 @@ import cc.winboll.studio.libappbase.utils.ServiceUtils;
import com.hjq.toast.ToastUtils;
import android.content.ServiceConnection;
import android.os.IBinder;
-import cc.winboll.studio.libappbase.services.TestService;
public class StatusWidget extends AppWidgetProvider {
@@ -52,12 +51,12 @@ public class StatusWidget extends AppWidgetProvider {
PendingIntent pendingIntentAppButton = PendingIntent.getBroadcast(context, 0, intentAppButton, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.ivapp, pendingIntentAppButton);
- boolean isActive = ServiceUtils.isServiceRunning(context, TestService.class.getName());
- if (isActive) {
- views.setImageViewResource(R.id.ivapp, cc.winboll.studio.libappbase.R.drawable.ic_launcher);
- } else {
- views.setImageViewResource(R.id.ivapp, cc.winboll.studio.libappbase.R.drawable.ic_launcher_disable);
- }
+// boolean isActive = ServiceUtils.isServiceRunning(context, TestService.class.getName());
+// if (isActive) {
+// views.setImageViewResource(R.id.ivapp, cc.winboll.studio.libappbase.R.drawable.ic_launcher);
+// } else {
+// views.setImageViewResource(R.id.ivapp, cc.winboll.studio.libappbase.R.drawable.ic_launcher_disable);
+// }
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}