From 08a3fefb4e20177a8c1d450dd271927c1ddd1f1e Mon Sep 17 00:00:00 2001
From: hjw <hjw@ma.nodka.com>
Date: Tue, 28 Apr 2026 08:15:56 +0000
Subject: [PATCH] 更新AndroidAPI1.5, 支持非su系统下非systemuid应用进行静默安装/卸载

---
 app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java            |    8 ++++----
 /dev/null                                                                  |    0 
 app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Sys.java  |   10 ++++------
 app/src/main/libs/arm64-v8a/libandroid-jni.so                              |    0 
 app/src/main/java/com/jwipc/nodka_reboot_under/MyApplication.java          |   16 ++++++++--------
 app/src/main/java/com/jwipc/nodka_reboot_under/utils/Utils.java            |   19 ++++---------------
 app/libs/AndroidAPI-sources.jar                                            |    0 
 app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Boot.java |    2 +-
 app/libs/AndroidAPI.jar                                                    |    0 
 app/build.gradle                                                           |    2 +-
 10 files changed, 22 insertions(+), 35 deletions(-)

diff --git a/app/build.gradle b/app/build.gradle
index 7e429df..917de14 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -39,6 +39,6 @@
 dependencies {
     implementation 'com.android.support:support-v4:25.+'
     implementation files('libs/spirit.jar')
-    implementation files('libs/NodkaAPI.jar')
+    implementation files('libs/AndroidAPI.jar')
     compileOnly files('libs/classes-header.jar')
 }
diff --git a/app/libs/AndroidAPI-sources.jar b/app/libs/AndroidAPI-sources.jar
new file mode 100644
index 0000000..2be0a1b
--- /dev/null
+++ b/app/libs/AndroidAPI-sources.jar
Binary files differ
diff --git a/app/libs/AndroidAPI.jar b/app/libs/AndroidAPI.jar
new file mode 100644
index 0000000..c3d5dff
--- /dev/null
+++ b/app/libs/AndroidAPI.jar
Binary files differ
diff --git a/app/libs/NodkaAPI.jar b/app/libs/NodkaAPI.jar
deleted file mode 100644
index 30d17ab..0000000
--- a/app/libs/NodkaAPI.jar
+++ /dev/null
Binary files differ
diff --git a/app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Boot.java b/app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Boot.java
index fe9ad09..cbeac55 100644
--- a/app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Boot.java
+++ b/app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Boot.java
@@ -56,7 +56,7 @@
 					AlarmPowerManager mAlarmPowerManager = new AlarmPowerManager();
 					mAlarmPowerManager.removeAllalarmPower();
 				} else {
-					MyApplication.getApplication().getNodkaAPI().alarm_removeAllalarmPower();
+					MyApplication.getApplication().getAndroidAPI().alarm_removeAllalarmPower();
 				}
 				
 				mUtils.remove_String_From_SharedPreferences(mUtils.repeat_alarm_poweron_time);
diff --git a/app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Sys.java b/app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Sys.java
index 45e5037..8950a87 100644
--- a/app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Sys.java
+++ b/app/src/main/java/com/jwipc/nodka_reboot_under/BroadcastReceiver_Sys.java
@@ -126,9 +126,8 @@
              */
             String path = intent.getStringExtra("path");
             if (!TextUtils.isEmpty(path)) {
-                String params = "pm install -r " + path;
-                String result = mUtils.getRootCmdSilent(params);
-                Log.i(TAG, "onReceive: PKG_INSTALL, params = " + params + ", result = " + result);
+                MyApplication.getApplication().getAndroidAPI().sysctrl_installApplicationLocal(path);
+                Log.i(TAG, "onReceive: PKG_INSTALL, path = " + path);
             }
         } else if (action.equals("com.nodka.action.PKG_UNINSTALL")) {
             /**
@@ -142,9 +141,8 @@
              */
             String pkgName = intent.getStringExtra("pkgName");
             if (!TextUtils.isEmpty(pkgName)) {
-                String params = "pm uninstall " + pkgName;
-                String result = mUtils.getRootCmdSilent(params);
-                Log.i(TAG, "onReceive: PKG_UNINSTALL, params = " + params + ", result = " + result);
+                MyApplication.getApplication().getAndroidAPI().sysctrl_uninstallApplicationLocal(pkgName);
+                Log.i(TAG, "onReceive: PKG_UNINSTALL, pkgName = " + pkgName);
             }
         } else if (action.equals("com.nodka.action.BLUETOOTH")) {
             /**
diff --git a/app/src/main/java/com/jwipc/nodka_reboot_under/MyApplication.java b/app/src/main/java/com/jwipc/nodka_reboot_under/MyApplication.java
index f54af1e..06e5c30 100644
--- a/app/src/main/java/com/jwipc/nodka_reboot_under/MyApplication.java
+++ b/app/src/main/java/com/jwipc/nodka_reboot_under/MyApplication.java
@@ -2,30 +2,30 @@
 
 import android.app.Application;
 
-import com.nodka.api.NodkaAPI;
+import com.android.api.AndroidAPI;
 
 public class MyApplication extends Application {
 
-    private NodkaAPI mNodkaAPI;
+    private AndroidAPI mAndroidAPI;
     private static MyApplication mApp;
 
     @Override
     public void onCreate() {
         super.onCreate();
         mApp = this;
-        createNorcoAPI();
+        createAndroidAPI();
     }
 
     public static MyApplication getApplication() {
         return mApp;
     }
 
-    private void createNorcoAPI() {
-        mNodkaAPI = NodkaAPI.nodkaAPICreate(this);
-        mNodkaAPI.alarm_start();
+    private void createAndroidAPI() {
+        mAndroidAPI = AndroidAPI.androidAPICreate(this);
+        mAndroidAPI.alarm_start();
     }
 
-    public NodkaAPI getNodkaAPI() {
-        return mNodkaAPI;
+    public AndroidAPI getAndroidAPI() {
+        return mAndroidAPI;
     }
 }
diff --git a/app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java b/app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java
index b81bd45..feb85f0 100644
--- a/app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java
+++ b/app/src/main/java/com/jwipc/nodka_reboot_under/The_Service.java
@@ -1,8 +1,8 @@
 package com.jwipc.nodka_reboot_under;
 
 
+import com.android.api.AndroidAPI;
 import com.jwipc.nodka_reboot_under.utils.Utils;
-import com.nodka.api.NodkaAPI;
 
 import android.app.Service;
 import android.content.Context;
@@ -26,7 +26,7 @@
 	
 	public static final int apk_feed_dog = 1;
 
-	private NodkaAPI mNodkaAPI = MyApplication.getApplication().getNodkaAPI();
+	private AndroidAPI mAndroidAPI = MyApplication.getApplication().getAndroidAPI();
 	private Thread gpioThread;
 	private static boolean gpioRead;
 
@@ -56,7 +56,7 @@
 	}
 
 	private void startGpioThread() {
-		mNodkaAPI.gpio_export(95);
+		mAndroidAPI.gpio_export(95);
 		gpioRead = true;
 		gpioThread = new Thread(() -> {
 			while (gpioRead) {
@@ -70,7 +70,7 @@
 	}
 
 	private boolean isActive() {
-		return mNodkaAPI.gpio_read(95) == 1;
+		return mAndroidAPI.gpio_read(95) == 1;
 	}
 
 	private void keycodePower() {
diff --git a/app/src/main/java/com/jwipc/nodka_reboot_under/utils/Utils.java b/app/src/main/java/com/jwipc/nodka_reboot_under/utils/Utils.java
index 4f07730..ae31493 100644
--- a/app/src/main/java/com/jwipc/nodka_reboot_under/utils/Utils.java
+++ b/app/src/main/java/com/jwipc/nodka_reboot_under/utils/Utils.java
@@ -12,29 +12,18 @@
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.Calendar;
-import java.util.List;
 
 import android.app.ActivityManager;
 import android.content.Context;
-import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
-import android.hardware.spirit.AlarmPowerItem;
 import android.hardware.spirit.AlarmPowerManager;
 import android.jwipc.spirit.SpiritAlarmManager;
-import android.net.ConnectivityManager;
-import android.net.NetworkInfo;
-import android.net.NetworkInfo.DetailedState;
 import android.os.Build;
 import android.os.PowerManager;
-import android.os.RemoteException;
 import android.text.format.DateFormat;
-import android.util.Log;
 
 import com.jwipc.nodka_reboot_under.MyApplication;
-import com.nodka.api.NodkaAPI;
-import com.nodka.api.NodkaNative;
-
 
 public class Utils {
 
@@ -258,7 +247,7 @@
 			new AlarmPowerManager().removeAllalarmPower();
 			setFileState("0", "/sys/class/minix-rtc/MCURTCDATA");
 		} else {
-			MyApplication.getApplication().getNodkaAPI().alarm_removeAllalarmPower();
+			MyApplication.getApplication().getAndroidAPI().alarm_removeAllalarmPower();
 			setFileState("0", "/sys/class/minix-rtc/minix_RTC_DATA");
 		}
 
@@ -274,7 +263,7 @@
 					new SpiritAlarmManager().setSpiritAlarmWithDay(1, hms_on[0], hms_on[1]);
 					setFileState("1", "/sys/class/minix-rtc/MCURTCDATA");
 				} else {
-					MyApplication.getApplication().getNodkaAPI().alarm_setSpiritAlarmWithDay(1, hms_on[0], hms_on[1]);
+					MyApplication.getApplication().getAndroidAPI().alarm_setSpiritAlarmWithDay(1, hms_on[0], hms_on[1]);
 					setFileState("1", "/sys/class/minix-rtc/minix_RTC_DATA");
 				}
 
@@ -309,7 +298,7 @@
 
 					new AlarmPowerManager().updateAlarmPowerActive(0, active+"");
 				} else {
-					MyApplication.getApplication().getNodkaAPI().alarm_creatOneAlarmPower(calendar.get(Calendar.YEAR)+"",
+					MyApplication.getApplication().getAndroidAPI().alarm_creatOneAlarmPower(calendar.get(Calendar.YEAR)+"",
 							calendar.get(Calendar.MONTH)+1+"",
 							calendar.get(Calendar.DAY_OF_MONTH)+"",
 							hms_on[0]+"",
@@ -321,7 +310,7 @@
 							hms_on[0]>12? "0":"1",
 							hms_off[0]>12? "0":"1");
 
-					MyApplication.getApplication().getNodkaAPI().alarm_updateAlarmPowerActive(0, active+"");
+					MyApplication.getApplication().getAndroidAPI().alarm_updateAlarmPowerActive(0, active+"");
 				}
 			}
 		}
diff --git a/app/src/main/libs/arm64-v8a/libandroid-jni.so b/app/src/main/libs/arm64-v8a/libandroid-jni.so
new file mode 100644
index 0000000..a46a6bf
--- /dev/null
+++ b/app/src/main/libs/arm64-v8a/libandroid-jni.so
Binary files differ
diff --git a/app/src/main/libs/arm64-v8a/libnodka-jni.so b/app/src/main/libs/arm64-v8a/libnodka-jni.so
deleted file mode 100644
index dc8ea8f..0000000
--- a/app/src/main/libs/arm64-v8a/libnodka-jni.so
+++ /dev/null
Binary files differ

--
Gitblit v1.6.2