From c2ddc23ae5bc21f18bc886e30a8b67e1c3c987f0 Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Sun, 12 Jun 2022 02:50:38 +0500 Subject: [PATCH] Added: Add `MAX_PHANTOM_PROCESSES` and `DEVICE_CONFIG_SYNC_DISABLED` value to device info output like shown in Termux About page Related commit b6963035 --- .../app/activities/SettingsActivity.java | 2 +- .../terminal/TermuxTerminalViewClient.java | 2 +- .../termux/shared/android/AndroidUtils.java | 30 ++++++++++++++++--- .../termux/shared/markdown/MarkdownUtils.java | 4 +++ .../shared/termux/crash/TermuxCrashUtils.java | 2 +- .../termux/plugins/TermuxPluginUtils.java | 2 +- termux-shared/src/main/res/values/strings.xml | 1 + 7 files changed, 35 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/termux/app/activities/SettingsActivity.java b/app/src/main/java/com/termux/app/activities/SettingsActivity.java index 8c871a44..7ca78483 100644 --- a/app/src/main/java/com/termux/app/activities/SettingsActivity.java +++ b/app/src/main/java/com/termux/app/activities/SettingsActivity.java @@ -120,7 +120,7 @@ public class SettingsActivity extends AppCompatActivity { StringBuilder aboutString = new StringBuilder(); aboutString.append(TermuxUtils.getAppInfoMarkdownString(context, TermuxUtils.AppInfoMode.TERMUX_AND_PLUGIN_PACKAGES)); - aboutString.append("\n\n").append(AndroidUtils.getDeviceInfoMarkdownString(context)); + aboutString.append("\n\n").append(AndroidUtils.getDeviceInfoMarkdownString(context, true)); aboutString.append("\n\n").append(TermuxUtils.getImportantLinksMarkdownString(context)); String userActionName = UserAction.ABOUT.getName(); diff --git a/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java b/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java index 1a3a8c3d..e352c790 100644 --- a/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java +++ b/app/src/main/java/com/termux/app/terminal/TermuxTerminalViewClient.java @@ -755,7 +755,7 @@ public class TermuxTerminalViewClient extends TermuxTerminalViewClientBase { reportString.append("\n\n").append(TermuxUtils.getAppInfoMarkdownString(mActivity, TermuxUtils.AppInfoMode.TERMUX_PACKAGE)); } - reportString.append("\n\n").append(AndroidUtils.getDeviceInfoMarkdownString(mActivity)); + reportString.append("\n\n").append(AndroidUtils.getDeviceInfoMarkdownString(mActivity, true)); if (TermuxBootstrap.isAppPackageManagerAPT()) { String termuxAptInfo = TermuxUtils.geAPTInfoMarkdownString(mActivity); diff --git a/termux-shared/src/main/java/com/termux/shared/android/AndroidUtils.java b/termux-shared/src/main/java/com/termux/shared/android/AndroidUtils.java index bc229f45..bca47578 100644 --- a/termux-shared/src/main/java/com/termux/shared/android/AndroidUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/android/AndroidUtils.java @@ -9,6 +9,7 @@ import android.os.Build; import androidx.annotation.NonNull; import com.google.common.base.Joiner; +import com.termux.shared.R; import com.termux.shared.data.DataUtils; import com.termux.shared.logger.Logger; import com.termux.shared.markdown.MarkdownUtils; @@ -50,7 +51,7 @@ public class AndroidUtils { AndroidUtils.appendPropertyToMarkdown(markdownString,"FILES_DIR", filesDir); - if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ) { + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { Long userId = PackageUtils.getUserIdForPackage(context); if (userId == null || userId != 0) AndroidUtils.appendPropertyToMarkdown(markdownString, "USER_ID", userId); @@ -99,13 +100,18 @@ public class AndroidUtils { return markdownString.toString(); } + public static String getDeviceInfoMarkdownString(@NonNull final Context context) { + return getDeviceInfoMarkdownString(context, false); + } + /** * Get a markdown {@link String} for the device info. * * @param context The context for operations. + * @param addPhantomProcessesInfo If phantom processes info should be added on Android >= 12. * @return Returns the markdown {@link String}. */ - public static String getDeviceInfoMarkdownString(@NonNull final Context context) { + public static String getDeviceInfoMarkdownString(@NonNull final Context context, boolean addPhantomProcessesInfo) { // Some properties cannot be read with {@link System#getProperty(String)} but can be read // directly by running getprop command Properties systemProperties = getSystemProperties(); @@ -133,8 +139,16 @@ public class AndroidUtils { appendPropertyToMarkdown(markdownString, "TAGS", Build.TAGS); // If on Android >= 12 - if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) - appendPropertyToMarkdown(markdownString, "MONITOR_PHANTOM_PROCS", FeatureFlagUtils.getFeatureFlagValueString(context, FeatureFlagUtils.SETTINGS_ENABLE_MONITOR_PHANTOM_PROCS).getName()); + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) { + Integer maxPhantomProcesses = PhantomProcessUtils.getActivityManagerMaxPhantomProcesses(context); + if (maxPhantomProcesses != null) + appendPropertyToMarkdown(markdownString, "MAX_PHANTOM_PROCESSES", maxPhantomProcesses); + else + appendLiteralPropertyToMarkdown(markdownString, "MAX_PHANTOM_PROCESSES", "- (*" + context.getString(R.string.msg_requires_dump_and_package_usage_stats_permissions) + "*)"); + + appendPropertyToMarkdown(markdownString, "MONITOR_PHANTOM_PROCS", PhantomProcessUtils.getFeatureFlagMonitorPhantomProcsValueString(context).getName()); + appendPropertyToMarkdown(markdownString, "DEVICE_CONFIG_SYNC_DISABLED", PhantomProcessUtils.getSettingsGlobalDeviceConfigSyncDisabled(context)); + } markdownString.append("\n\n### Hardware\n"); appendPropertyToMarkdown(markdownString, "MANUFACTURER", Build.MANUFACTURER); @@ -222,6 +236,14 @@ public class AndroidUtils { return MarkdownUtils.getSingleLineMarkdownStringEntry(label, value, "-"); } + public static void appendLiteralPropertyToMarkdown(StringBuilder markdownString, String label, Object value) { + markdownString.append("\n").append(getLiteralPropertyMarkdown(label, value)); + } + + public static String getLiteralPropertyMarkdown(String label, Object value) { + return MarkdownUtils.getLiteralSingleLineMarkdownStringEntry(label, value, "-"); + } + public static String getCurrentTimeStamp() { diff --git a/termux-shared/src/main/java/com/termux/shared/markdown/MarkdownUtils.java b/termux-shared/src/main/java/com/termux/shared/markdown/MarkdownUtils.java index 08d8c867..4e1b482e 100644 --- a/termux-shared/src/main/java/com/termux/shared/markdown/MarkdownUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/markdown/MarkdownUtils.java @@ -106,6 +106,10 @@ public class MarkdownUtils { + public static String getLiteralSingleLineMarkdownStringEntry(String label, Object object, String def) { + return "**" + label + "**: " + (object != null ? object.toString() : def) + " "; + } + public static String getSingleLineMarkdownStringEntry(String label, Object object, String def) { if (object != null) return "**" + label + "**: " + getMarkdownCodeForString(object.toString(), false) + " "; diff --git a/termux-shared/src/main/java/com/termux/shared/termux/crash/TermuxCrashUtils.java b/termux-shared/src/main/java/com/termux/shared/termux/crash/TermuxCrashUtils.java index 8117af02..1cd4ce06 100644 --- a/termux-shared/src/main/java/com/termux/shared/termux/crash/TermuxCrashUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/termux/crash/TermuxCrashUtils.java @@ -324,7 +324,7 @@ public class TermuxCrashUtils implements CrashHandler.CrashHandlerClient { reportString.append("\n\n").append(TermuxUtils.getAppInfoMarkdownString(currentPackageContext, appInfoMode, currentPackageName)); if (addDeviceInfo) - reportString.append("\n\n").append(AndroidUtils.getDeviceInfoMarkdownString(currentPackageContext)); + reportString.append("\n\n").append(AndroidUtils.getDeviceInfoMarkdownString(currentPackageContext, true)); String userActionName = UserAction.CRASH_REPORT.getName(); diff --git a/termux-shared/src/main/java/com/termux/shared/termux/plugins/TermuxPluginUtils.java b/termux-shared/src/main/java/com/termux/shared/termux/plugins/TermuxPluginUtils.java index 8d83dc0f..cb37ddc3 100644 --- a/termux-shared/src/main/java/com/termux/shared/termux/plugins/TermuxPluginUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/termux/plugins/TermuxPluginUtils.java @@ -362,7 +362,7 @@ public class TermuxPluginUtils { callingPackageName != null ? callingPackageName : currentPackageName)); if (addDeviceInfo) - reportString.append("\n\n").append(AndroidUtils.getDeviceInfoMarkdownString(currentPackageContext)); + reportString.append("\n\n").append(AndroidUtils.getDeviceInfoMarkdownString(currentPackageContext, true)); String userActionName = UserAction.PLUGIN_EXECUTION_COMMAND.getName(); diff --git a/termux-shared/src/main/res/values/strings.xml b/termux-shared/src/main/res/values/strings.xml index c9f1622b..9124a889 100644 --- a/termux-shared/src/main/res/values/strings.xml +++ b/termux-shared/src/main/res/values/strings.xml @@ -36,6 +36,7 @@ Attempted to check for permissions that have not been requested in app manifest: %1$s Attempted to ask for permissions that have not been requested in app manifest: %1$s The \"%1$s\" package is targeting targetSdkVersion %2$d and is running on android sdk %3$d but has not set requestLegacyExternalStorage to true in app manifest + Requires `DUMP` and `PACKAGE_USAGE_STATS` permission