diff --git a/app/src/main/java/org/lsposed/manager/ConfigManager.java b/app/src/main/java/org/lsposed/manager/ConfigManager.java index 82d5b565..17b4d163 100644 --- a/app/src/main/java/org/lsposed/manager/ConfigManager.java +++ b/app/src/main/java/org/lsposed/manager/ConfigManager.java @@ -342,6 +342,15 @@ public class ConfigManager { } } + public static String getApi() { + try { + return LSPManagerServiceHolder.getService().getApi(); + } catch (RemoteException e) { + Log.e(App.TAG, Log.getStackTraceString(e)); + return e.toString(); + } + } + public static List getDenyListPackages() { List list = new ArrayList<>(); try { diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java index 92d751b7..29539458 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java @@ -134,8 +134,8 @@ public class HomeFragment extends BaseFragment { private void updateStates(Activity activity, boolean binderAlive, boolean needUpdate) { int cardBackgroundColor; if (binderAlive) { - StringBuilder sb = new StringBuilder(String.format(Locale.ROOT, "%s (%d)", - ConfigManager.getXposedVersionName(), ConfigManager.getXposedVersionCode())); + StringBuilder sb = new StringBuilder(String.format(Locale.ROOT, "%s (%d) - %s", + ConfigManager.getXposedVersionName(), ConfigManager.getXposedVersionCode(), ConfigManager.getApi())); if (needUpdate) { cardBackgroundColor = ResourceUtils.resolveColor(activity.getTheme(), R.attr.colorInstall); binding.statusTitle.setText(R.string.need_update); diff --git a/core/build.gradle.kts b/core/build.gradle.kts index f7ee95f5..eab86f10 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -140,6 +140,7 @@ android { arguments += "API=${name.toLowerCase()}" } } + buildConfigField("String", "API", """"$name"""") } create("Riru") { diff --git a/core/src/main/aidl/org/lsposed/lspd/service/ILSPosedService.aidl b/core/src/main/aidl/org/lsposed/lspd/service/ILSPosedService.aidl index b9c939ea..fd79b068 100644 --- a/core/src/main/aidl/org/lsposed/lspd/service/ILSPosedService.aidl +++ b/core/src/main/aidl/org/lsposed/lspd/service/ILSPosedService.aidl @@ -5,7 +5,7 @@ import org.lsposed.lspd.service.ILSPApplicationService; interface ILSPosedService { ILSPApplicationService requestApplicationService(int uid, int pid, String processName, IBinder heartBeat); - oneway void dispatchSystemServerContext(in IBinder activityThread, in IBinder activityToken); + oneway void dispatchSystemServerContext(in IBinder activityThread, in IBinder activityToken, String api); boolean preStartManager(String pkgName, in Intent intent); } diff --git a/core/src/main/java/org/lsposed/lspd/service/BridgeService.java b/core/src/main/java/org/lsposed/lspd/service/BridgeService.java index a9910b9d..d7bcdfd5 100644 --- a/core/src/main/java/org/lsposed/lspd/service/BridgeService.java +++ b/core/src/main/java/org/lsposed/lspd/service/BridgeService.java @@ -41,6 +41,8 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import org.lsposed.lspd.BuildConfig; + import java.lang.reflect.Field; import java.util.Map; @@ -222,7 +224,7 @@ public class BridgeService { try { IApplicationThread at = ActivityThread.currentActivityThread().getApplicationThread(); Context ctx = ActivityThread.currentActivityThread().getSystemContext(); - service.dispatchSystemServerContext(at.asBinder(), Context_getActivityToken(ctx)); + service.dispatchSystemServerContext(at.asBinder(), Context_getActivityToken(ctx), BuildConfig.API); } catch (Throwable e) { Log.e(TAG, "dispatch context: ", e); } diff --git a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java index 7ed2f81e..ee0a9c24 100644 --- a/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java +++ b/core/src/main/java/org/lsposed/lspd/service/ConfigManager.java @@ -98,6 +98,8 @@ public class ConfigManager { private boolean sepolicyLoaded = true; + private String api = "(???)"; + static class ProcessScope { final String processName; final int uid; @@ -942,4 +944,12 @@ public class ConfigManager { } return result; } + + public void setApi(String api) { + this.api = api; + } + + public String getApi() { + return api; + } } diff --git a/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java b/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java index 89c01db5..8a4745c1 100644 --- a/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java +++ b/core/src/main/java/org/lsposed/lspd/service/LSPManagerService.java @@ -511,6 +511,11 @@ public class LSPManagerService extends ILSPManagerService.Stub { return BuildConfig.VERSION_NAME; } + @Override + public String getApi() { + return ConfigManager.getInstance().getApi(); + } + @Override public ParceledListSlice getInstalledPackagesFromAllUsers(int flags, boolean filterNoProcess) throws RemoteException { return PackageService.getInstalledPackagesFromAllUsers(flags, filterNoProcess); diff --git a/core/src/main/java/org/lsposed/lspd/service/LSPosedService.java b/core/src/main/java/org/lsposed/lspd/service/LSPosedService.java index 4a4e23fd..76e27ca2 100644 --- a/core/src/main/java/org/lsposed/lspd/service/LSPosedService.java +++ b/core/src/main/java/org/lsposed/lspd/service/LSPosedService.java @@ -300,8 +300,9 @@ public class LSPosedService extends ILSPosedService.Stub { } @Override - public void dispatchSystemServerContext(IBinder activityThread, IBinder activityToken) { + public void dispatchSystemServerContext(IBinder activityThread, IBinder activityToken, String api) { Log.d(TAG, "received system context"); + ConfigManager.getInstance().setApi(api); ActivityManagerService.onSystemServerContext(IApplicationThread.Stub.asInterface(activityThread), activityToken); registerPackageReceiver(); registerUnlockReceiver(); diff --git a/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl b/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl index e2898537..e6857581 100644 --- a/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl +++ b/manager-service/src/main/aidl/org/lsposed/lspd/ILSPManagerService.aidl @@ -6,6 +6,8 @@ import org.lsposed.lspd.models.Application; interface ILSPManagerService { + String getApi() = 1; + ParceledListSlice getInstalledPackagesFromAllUsers(int flags, boolean filterNoProcess) = 2; String[] enabledModules() = 3;