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/utils/Utils.java | 80 ++++++++++++++++++++++++++++++++-------
1 files changed, 65 insertions(+), 15 deletions(-)
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 210c117..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
@@ -1,6 +1,7 @@
package com.jwipc.nodka_reboot_under.utils;
import java.io.BufferedReader;
+import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
@@ -11,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 {
@@ -257,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");
}
@@ -273,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");
}
@@ -308,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]+"",
@@ -320,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+"");
}
}
}
@@ -688,6 +678,66 @@
return re;
}
+
+ public String getRootCmdSilent(String cmd) {
+ DataOutputStream dos = null;
+ DataInputStream dis = null;
+ Process process = null;
+ try {
+ process = Runtime.getRuntime().exec("su");
+ dos = new DataOutputStream(process.getOutputStream());
+ dis = new DataInputStream(process.getInputStream());
+ dos.write(cmd.getBytes());
+ dos.flush();
+ dos.close();
+ process.waitFor();
+ return getStrFromDataInPutStream(dis);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ } finally {
+ if (dos != null) {
+ try {
+ dos.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (dis != null) {
+ try {
+ dis.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ if (process != null) {
+ process.destroy();
+ }
+ }
+ }
+
+ private String getStrFromDataInPutStream(DataInputStream dos) {
+ if (null == dos) {
+ return "";
+ }
+ int BUFFER_SIZE = 512;
+ byte[] buffer = new byte[BUFFER_SIZE];
+ StringBuilder result = new StringBuilder();
+ try {
+ while (true) {
+ int read = dos.read(buffer);
+ if (read > 0) {
+ result.append(new String(buffer, 0, read));
+ }
+ if (read < BUFFER_SIZE) {
+ break;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return result.toString();
+ }
public boolean isSpiritVersion() {
return Build.VERSION.SDK_INT <= 25;
--
Gitblit v1.6.2