From 554d01092ce1b708cb512f9febdc453e7096f056 Mon Sep 17 00:00:00 2001 From: frknkrc44 Date: Mon, 11 Aug 2025 18:33:51 +0300 Subject: [PATCH] Big changes - Add myself as a developer - Change package name to org.frknkrc44.hma_oss - Rename Hide-My-Applist to HMA-OSS - Add my own links - Other fixes and improvements --- .github/ISSUE_TEMPLATE/bug_report.yml | 8 +++--- README.md | 20 ++++++--------- README_zh_CN.md | 17 ++++++------- app/build.gradle.kts | 18 +------------ app/proguard-rules.pro | 2 +- app/src/main/AndroidManifest.xml | 18 ++----------- .../java/icu/nullptr/hidemyapplist/MyApp.kt | 2 +- .../nullptr/hidemyapplist/data/UpdateInfo.kt | 3 +++ .../hidemyapplist/service/ConfigManager.kt | 4 +-- .../hidemyapplist/service/PrefManager.kt | 20 --------------- .../ui/activity/AboutActivity.kt | 15 ++++++----- .../hidemyapplist/ui/activity/MainActivity.kt | 4 +-- .../hidemyapplist/ui/adapter/LogAdapter.kt | 4 +-- .../ui/adapter/TemplateAdapter.kt | 2 +- .../ui/fragment/AppManageFragment.kt | 2 +- .../ui/fragment/AppSelectFragment.kt | 4 +-- .../ui/fragment/AppSettingsFragment.kt | 4 +-- .../hidemyapplist/ui/fragment/HomeFragment.kt | 24 ++++++++---------- .../hidemyapplist/ui/fragment/LogsFragment.kt | 4 +-- .../ui/fragment/SettingsFragment.kt | 10 ++------ .../ui/fragment/TemplateManageFragment.kt | 4 +-- .../ui/fragment/TemplateSettingsFragment.kt | 4 +-- .../hidemyapplist/ui/util/ThemeUtils.kt | 2 +- .../hidemyapplist/ui/view/AppItemView.kt | 2 +- .../hidemyapplist/ui/view/ListItemView.kt | 4 +-- app/src/main/res/drawable/cont_fk.webp | Bin 0 -> 29866 bytes app/src/main/res/values-af-rZA/strings.xml | 4 +-- app/src/main/res/values-ar-rSA/strings.xml | 4 +-- app/src/main/res/values-ca-rES/strings.xml | 4 +-- app/src/main/res/values-cs-rCZ/strings.xml | 4 +-- app/src/main/res/values-da-rDK/strings.xml | 4 +-- app/src/main/res/values-el-rGR/strings.xml | 4 +-- app/src/main/res/values-es-rES/strings.xml | 4 +-- app/src/main/res/values-fi-rFI/strings.xml | 4 +-- app/src/main/res/values-fr-rFR/strings.xml | 2 +- app/src/main/res/values-hu-rHU/strings.xml | 4 +-- app/src/main/res/values-it-rIT/strings.xml | 4 +-- app/src/main/res/values-iw-rIL/strings.xml | 4 +-- app/src/main/res/values-ja-rJP/strings.xml | 4 +-- app/src/main/res/values-ko-rKR/strings.xml | 4 +-- app/src/main/res/values-nl-rNL/strings.xml | 4 +-- app/src/main/res/values-no-rNO/strings.xml | 2 +- app/src/main/res/values-pl-rPL/strings.xml | 2 +- app/src/main/res/values-pt-rBR/strings.xml | 4 +-- app/src/main/res/values-pt-rPT/strings.xml | 4 +-- app/src/main/res/values-ru-rRU/strings.xml | 4 +-- app/src/main/res/values-sr-rSP/strings.xml | 4 +-- app/src/main/res/values-sv-rSE/strings.xml | 4 +-- app/src/main/res/values-uk-rUA/strings.xml | 4 +-- app/src/main/res/values-vi-rVN/strings.xml | 2 +- app/src/main/res/values/strings.xml | 8 ++++-- app/src/main/res/xml/settings.xml | 9 +++---- common/build.gradle.kts | 2 +- .../hidemyapplist/common/Constants.java | 2 +- .../hidemyapplist/common/JsonConfig.kt | 2 +- settings.gradle.kts | 2 +- xposed/build.gradle.kts | 2 +- .../hidemyapplist/xposed/HMAService.kt | 1 + .../hidemyapplist/xposed/UserService.kt | 2 +- 59 files changed, 133 insertions(+), 186 deletions(-) create mode 100644 app/src/main/res/drawable/cont_fk.webp diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 87a0427..479c421 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -6,13 +6,13 @@ body: - type: markdown attributes: value: | - Thanks for reporting issues of Hide-My-Applist! + Thanks for reporting issues of HMA-OSS! To prevent spam, please fill in the title after "[Bug]". To make it easier for us to help you please enter detailed information below. - 感谢给 Hide-My-Applist 汇报问题! + 感谢给 HMA-OSS 汇报问题! 为了使我们更好地帮助你,请提供以下信息。 为了防止重复汇报与垃圾信息,标题请务必使用英文,在“[Bug]”之后填写内容。 - type: textarea @@ -50,8 +50,8 @@ body: required: true - type: input attributes: - label: Hide-My-Applist version/Hide-My-Applist 版本 - description: Please check [Actions](https://github.com/Dr-TSNG/Hide-My-Applist/actions/workflows/main.yml) for the latest CI debug build. Don't just type "latest". Specify actual version (**MUST** contains `.rXXX.XXX-debug`), otherwise your issue will be closed./请前往 [Actions](https://github.com/Dr-TSNG/Hide-My-Applist/actions/workflows/main.yml) 获取最新的 CI debug 版本。不要直接填用“最新版”。版本号**必须**包含 `·rXXX.XXX-debug`,否则 issue 会被自动关闭。 + label: HMA-OSS version/HMA-OSS 版本 + description: Please check [Actions](https://github.com/frknkrc44/HMA-OSS/actions/workflows/main.yml) for the latest CI debug build. Don't just type "latest". Specify actual version (**MUST** contains `.rXXX.XXX-debug`), otherwise your issue will be closed./请前往 [Actions](https://github.com/frknkrc44/HMA-OSS/actions/workflows/main.yml) 获取最新的 CI debug 版本。不要直接填用“最新版”。版本号**必须**包含 `·rXXX.XXX-debug`,否则 issue 会被自动关闭。 placeholder: V_._._(-Beta).r___._______-debug validations: required: true diff --git a/README.md b/README.md index 3345de8..db2b38f 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,11 @@ -# Hide My Applist +# HMA-OSS -[![Stars](https://img.shields.io/github/stars/Dr-TSNG/Hide-My-Applist?label=Stars)](https://github.com/Dr-TSNG) -[![Crowdin](https://badges.crowdin.net/hide-my-applist/localized.svg)](https://crowdin.com/project/hide-my-applist) -[![Build](https://img.shields.io/github/actions/workflow/status/Dr-TSNG/Hide-My-Applist/main.yml?branch=master&logo=github)](https://github.com/Dr-TSNG/Hide-My-Applist/actions) -[![Release](https://img.shields.io/github/v/release/Dr-TSNG/Hide-My-Applist?label=Release)](https://github.com/Dr-TSNG/Hide-My-Applist/releases/latest) -[![Download](https://img.shields.io/github/downloads/Dr-TSNG/Hide-My-Applist/total)](https://github.com/Dr-TSNG/Hide-My-Applist/releases/latest) -[![Channel](https://img.shields.io/badge/Telegram-Channel-blue.svg?logo=telegram)](https://t.me/HideMyApplist) -[![License](https://img.shields.io/github/license/Dr-TSNG/Hide-My-Applist?label=License)](https://choosealicense.com/licenses/gpl-3.0/) +[![Stars](https://github.com/frknkrc44/HMA-OSS?label=Stars)](https://github.com/frknkrc44) +[![Build](https://img.shields.io/github/actions/workflow/status/frknkrc44/HMA-OSS/main.yml?branch=master&logo=github)](https://github.com/frknkrc44/HMA-OSS/actions) +[![Release](https://img.shields.io/github/v/release/frknkrc44/HMA-OSS?label=Release)](https://github.com/frknkrc44/HMA-OSS/releases/latest) +[![Download](https://img.shields.io/github/downloads/frknkrc44/HMA-OSS/total)](https://github.com/frknkrc44/HMA-OSS/releases/latest) +[![Channel](https://img.shields.io/badge/Telegram-Channel-blue.svg?logo=telegram)](https://t.me/aerathfuns) +[![License](https://img.shields.io/github/license/frknkrc44/HMA-OSS?label=License)](https://choosealicense.com/licenses/gpl-3.0/) ![banner](banner.png) @@ -21,8 +20,5 @@ Additionally, some apps use various loopholes to acquire your app list, in order This module can work as an Xposed module to hide apps or reject app list requests, and provides some methods to test whether you have hidden your app list properly. -## Translation Contributing -You can contribute translation [here](https://crowdin.com/project/hide-my-applist). - ## Update Log -[Reference to the release page](https://github.com/Dr-TSNG/Hide-My-Applist/releases) +[Reference to the release page](https://github.com/frknkrc44/HMA-OSS/releases) diff --git a/README_zh_CN.md b/README_zh_CN.md index 26050dd..9de192e 100644 --- a/README_zh_CN.md +++ b/README_zh_CN.md @@ -1,12 +1,11 @@ -# Hide My Applist +# HMA-OSS -[![Stars](https://img.shields.io/github/stars/Dr-TSNG/Hide-My-Applist?label=Stars)](https://github.com/Dr-TSNG) -[![Crowdin](https://badges.crowdin.net/hide-my-applist/localized.svg)](https://crowdin.com/project/hide-my-applist) -[![Build](https://img.shields.io/github/actions/workflow/status/Dr-TSNG/Hide-My-Applist/main.yml?branch=master&logo=github)](https://github.com/Dr-TSNG/Hide-My-Applist/actions) -[![Release](https://img.shields.io/github/v/release/Dr-TSNG/Hide-My-Applist?label=Release)](https://github.com/Dr-TSNG/Hide-My-Applist/releases/latest) -[![Download](https://img.shields.io/github/downloads/Dr-TSNG/Hide-My-Applist/total)](https://github.com/Dr-TSNG/Hide-My-Applist/releases/latest) -[![Channel](https://img.shields.io/badge/Telegram-Channel-blue.svg?logo=telegram)](https://t.me/HideMyApplist) -[![License](https://img.shields.io/github/license/Dr-TSNG/Hide-My-Applist?label=License)](https://choosealicense.com/licenses/gpl-3.0/) +[![Stars](https://github.com/frknkrc44/HMA-OSS?label=Stars)](https://github.com/frknkrc44) +[![Build](https://img.shields.io/github/actions/workflow/status/frknkrc44/HMA-OSS/main.yml?branch=master&logo=github)](https://github.com/frknkrc44/HMA-OSS/actions) +[![Release](https://img.shields.io/github/v/release/frknkrc44/HMA-OSS?label=Release)](https://github.com/frknkrc44/HMA-OSS/releases/latest) +[![Download](https://img.shields.io/github/downloads/frknkrc44/HMA-OSS/total)](https://github.com/frknkrc44/HMA-OSS/releases/latest) +[![Channel](https://img.shields.io/badge/Telegram-Channel-blue.svg?logo=telegram)](https://t.me/aerathfuns) +[![License](https://img.shields.io/github/license/frknkrc44/HMA-OSS?label=License)](https://choosealicense.com/licenses/gpl-3.0/) ![banner](banner.png) @@ -19,4 +18,4 @@ 该模块提供了一些检测方式用于测试您是否成功地隐藏了某些特定的包名,如 Magisk/Edxposed Manager;同时可作为 Xposed 模块用于隐藏应用列表或特定应用,保护隐私。 ## 更新日志 -[参考发布页面](https://github.com/Dr-TSNG/Hide-My-Applist/releases) +[参考发布页面](https://github.com/frknkrc44/HMA-OSS/releases) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 23eb800..785ab21 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,7 +14,7 @@ plugins { } android { - namespace = "com.tsng.hidemyapplist" + namespace = "org.frknkrc44.hma_oss" buildFeatures { buildConfig = true @@ -80,22 +80,6 @@ materialThemeBuilder { generatePalette = true } -fun afterEval() = android.applicationVariants.forEach { variant -> - val variantCapped = variant.name.replaceFirstChar { it.titlecase(Locale.ROOT) } - val variantLowered = variant.name.lowercase(Locale.ROOT) - - tasks.register("build$variantCapped") { - dependsOn("assemble$variantCapped") - from(layout.buildDirectory.dir("outputs/apk/$variantLowered")) - into(layout.buildDirectory.dir("apk/$variantLowered")) - rename(".*.apk", "HMA-V${variant.versionName}-${variant.buildType.name}.apk") - } -} - -afterEvaluate { - afterEval() -} - dependencies { implementation(projects.common) runtimeOnly(projects.xposed) diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 143d9c5..9ef9c9f 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -13,6 +13,6 @@ -keep class icu.nullptr.hidemyapplist.data.UpdateData$* { *; } -keep,allowoptimization class * extends androidx.preference.PreferenceFragmentCompat --keepclassmembers class com.tsng.hidemyapplist.databinding.** { +-keepclassmembers class org.frknkrc44.hma_oss.databinding.** { public ; } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5720c53..bb9a2ee 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,7 +4,7 @@ + tools:ignore="PackageVisibilityPolicy,QueryAllPackagesPermission" /> @@ -29,26 +29,12 @@ - - - - - - - - diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/MyApp.kt b/app/src/main/java/icu/nullptr/hidemyapplist/MyApp.kt index b9e45c4..2c95fa5 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/MyApp.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/MyApp.kt @@ -3,7 +3,6 @@ package icu.nullptr.hidemyapplist import android.annotation.SuppressLint import android.app.Application import androidx.appcompat.app.AppCompatDelegate -import com.tsng.hidemyapplist.R import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.service.PrefManager import icu.nullptr.hidemyapplist.ui.receiver.AppChangeReceiver @@ -11,6 +10,7 @@ import icu.nullptr.hidemyapplist.ui.util.makeToast import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import me.zhanghai.android.appiconloader.AppIconLoader +import org.frknkrc44.hma_oss.R import rikka.material.app.LocaleDelegate import java.util.* import kotlin.system.exitProcess diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/data/UpdateInfo.kt b/app/src/main/java/icu/nullptr/hidemyapplist/data/UpdateInfo.kt index 0863bdb..63e045a 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/data/UpdateInfo.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/data/UpdateInfo.kt @@ -28,6 +28,7 @@ private data class UpdateData( } suspend fun fetchLatestUpdate(): UpdateInfo? { + /* val updateData = RxHttp.get(Constants.UPDATE_URL_BASE + "updates.json") .toAwait() .tryAwait() ?: return null @@ -39,4 +40,6 @@ suspend fun fetchLatestUpdate(): UpdateInfo? { .toAwaitString() .tryAwait() ?: return null return UpdateInfo(item.versionName, item.versionCode, content, item.downloadUrl) + */ + return null } diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/service/ConfigManager.kt b/app/src/main/java/icu/nullptr/hidemyapplist/service/ConfigManager.kt index 7a0aeb0..88e21f0 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/service/ConfigManager.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/service/ConfigManager.kt @@ -2,11 +2,11 @@ package icu.nullptr.hidemyapplist.service import android.os.Build import android.util.Log -import com.tsng.hidemyapplist.R -import icu.nullptr.hidemyapplist.common.BuildConfig import icu.nullptr.hidemyapplist.common.JsonConfig import icu.nullptr.hidemyapplist.hmaApp import icu.nullptr.hidemyapplist.ui.util.makeToast +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.common.BuildConfig import java.io.File object ConfigManager { diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/service/PrefManager.kt b/app/src/main/java/icu/nullptr/hidemyapplist/service/PrefManager.kt index 8f4c706..a47c34e 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/service/PrefManager.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/service/PrefManager.kt @@ -17,7 +17,6 @@ object PrefManager { private const val PREF_FOLLOW_SYSTEM_ACCENT = "follow_system_accent" private const val PREF_THEME_COLOR = "theme_color" - private const val PREF_HIDE_ICON = "hide_icon" private const val PREF_DISABLE_UPDATE = "disable_update" private const val PREF_RECEIVE_BETA_UPDATE = "receive_beta_update" @@ -57,25 +56,6 @@ object PrefManager { get() = pref.getString(PREF_THEME_COLOR, "MATERIAL_BLUE")!! set(value) = pref.edit().putString(PREF_THEME_COLOR, value).apply() - var hideIcon: Boolean - get() = pref.getBoolean(PREF_HIDE_ICON, false) - set(value) { - pref.edit().putBoolean(PREF_HIDE_ICON, value).apply() - val component = ComponentName(hmaApp, "com.tsng.hidemyapplist.MainActivityLauncher") - val status = - if (value) PackageManager.COMPONENT_ENABLED_STATE_DISABLED - else PackageManager.COMPONENT_ENABLED_STATE_ENABLED - hmaApp.packageManager.setComponentEnabledSetting(component, status, PackageManager.DONT_KILL_APP) - } - - var disableUpdate: Boolean - get() = pref.getBoolean(PREF_DISABLE_UPDATE, false) - set(value) = pref.edit().putBoolean(PREF_DISABLE_UPDATE, value).apply() - - var receiveBetaUpdate: Boolean - get() = pref.getBoolean(PREF_RECEIVE_BETA_UPDATE, false) - set(value) = pref.edit().putBoolean(PREF_RECEIVE_BETA_UPDATE, value).apply() - var appFilter_showSystem: Boolean get() = pref.getBoolean(PREF_APP_FILTER_SHOW_SYSTEM, false) set(value) = pref.edit().putBoolean(PREF_APP_FILTER_SHOW_SYSTEM, value).apply() diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/AboutActivity.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/AboutActivity.kt index a6e5f36..60717bb 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/AboutActivity.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/AboutActivity.kt @@ -4,8 +4,8 @@ import android.annotation.SuppressLint import android.widget.ImageView import android.widget.TextView import com.drakeet.about.* -import com.tsng.hidemyapplist.BuildConfig -import com.tsng.hidemyapplist.R +import org.frknkrc44.hma_oss.BuildConfig +import org.frknkrc44.hma_oss.R class AboutActivity : AbsAboutActivity() { @@ -17,6 +17,9 @@ class AboutActivity : AbsAboutActivity() { } override fun onItemsCreated(items: MutableList) { + items.add(Category(getString(R.string.title_about_fork))) + items.add(Card(getString(R.string.about_fork_description))) + items.add(Category(getString(R.string.title_about))) items.add(Card(getString(R.string.about_description))) @@ -28,6 +31,8 @@ class AboutActivity : AbsAboutActivity() { items.add(Category(getString(R.string.about_developer))) items.add(Contributor(R.drawable.cont_author, "\uD835\uDD93\uD835\uDD9A\uD835\uDD91\uD835\uDD91\uD835\uDD95\uD835\uDD99\uD835\uDD97", "Developer", "https://github.com/Dr-TSNG")) items.add(Line()) + items.add(Contributor(R.drawable.cont_fk, "frknkrc44", "HMA-OSS Developer", "https://github.com/frknkrc44")) + items.add(Line()) items.add(Contributor(R.drawable.cont_k, "Ketal", "Collaborator", "https://github.com/keta1")) items.add(Line()) items.add(Contributor(R.drawable.cont_aviraxp, "aviraxp", "Collaborator", "https://github.com/aviraxp")) @@ -37,11 +42,9 @@ class AboutActivity : AbsAboutActivity() { items.add(Contributor(R.drawable.cont_cpp_master, "LoveSy", "Idea provider", "https://github.com/yujincheng08")) items.add(Category(getString(R.string.about_support))) - items.add(Card("Github\nhttps://github.com/Dr-TSNG/Hide-My-Applist")) + items.add(Card("Github\nhttps://github.com/frknkrc44/HMA-OSS")) items.add(Line()) - items.add(Card("Telegram\nhttps://t.me/HideMyApplist")) - items.add(Line()) - items.add(Card("Play store\nhttps://play.google.com/store/apps/details?id=com.tsng.hidemyapplist")) + items.add(Card("Telegram\nhttps://t.me/aerathfuns")) items.add(Category(getString(R.string.about_open_source))) items.add(License("MultiType", "drakeet", License.APACHE_2, "https://github.com/drakeet/MultiType")) diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/MainActivity.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/MainActivity.kt index 12a3f7d..ab9a04f 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/MainActivity.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/activity/MainActivity.kt @@ -7,8 +7,8 @@ import androidx.navigation.findNavController import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.NavigationUI.setupWithNavController import com.google.android.material.color.DynamicColors -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.ActivityMainBinding +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.ActivityMainBinding import icu.nullptr.hidemyapplist.ui.util.ThemeUtils import rikka.material.app.MaterialActivity diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/LogAdapter.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/LogAdapter.kt index cf84e41..9b0ab8d 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/LogAdapter.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/LogAdapter.kt @@ -7,8 +7,8 @@ import android.os.Build import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.LogItemViewBinding +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.LogItemViewBinding import icu.nullptr.hidemyapplist.service.PrefManager import icu.nullptr.hidemyapplist.ui.util.ThemeUtils.themeColor import java.util.regex.Pattern diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/TemplateAdapter.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/TemplateAdapter.kt index 5519366..506300d 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/TemplateAdapter.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/adapter/TemplateAdapter.kt @@ -2,7 +2,7 @@ package icu.nullptr.hidemyapplist.ui.adapter import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.tsng.hidemyapplist.R +import org.frknkrc44.hma_oss.R import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.view.ListItemView import java.text.Collator diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppManageFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppManageFragment.kt index 440536e..929bbcb 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppManageFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppManageFragment.kt @@ -2,7 +2,7 @@ package icu.nullptr.hidemyapplist.ui.fragment import android.os.Bundle import com.google.android.material.transition.MaterialSharedAxis -import com.tsng.hidemyapplist.R +import org.frknkrc44.hma_oss.R import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.adapter.AppManageAdapter import icu.nullptr.hidemyapplist.ui.util.navController diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSelectFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSelectFragment.kt index c4d5ba4..20c428c 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSelectFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSelectFragment.kt @@ -10,8 +10,8 @@ import androidx.lifecycle.flowWithLifecycle import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import by.kirich1409.viewbindingdelegate.viewBinding -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentAppSelectBinding +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.FragmentAppSelectBinding import icu.nullptr.hidemyapplist.service.PrefManager import icu.nullptr.hidemyapplist.ui.adapter.AppSelectAdapter import icu.nullptr.hidemyapplist.ui.util.navController diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSettingsFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSettingsFragment.kt index f3dadc0..8f286b7 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSettingsFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/AppSettingsFragment.kt @@ -12,8 +12,8 @@ import androidx.navigation.fragment.navArgs import androidx.preference.* import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentSettingsBinding +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.FragmentSettingsBinding import icu.nullptr.hidemyapplist.common.JsonConfig import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.util.navController diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/HomeFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/HomeFragment.kt index b564965..a06d6f0 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/HomeFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/HomeFragment.kt @@ -1,27 +1,23 @@ package icu.nullptr.hidemyapplist.ui.fragment +import android.annotation.SuppressLint import android.content.Intent import android.net.Uri import android.os.Build import android.os.Bundle -import android.text.Html import android.view.View import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.result.contract.ActivityResultContracts.CreateDocument -import androidx.core.net.toUri import androidx.fragment.app.Fragment -import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.FragmentNavigatorExtras import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.transition.MaterialElevationScale -import com.tsng.hidemyapplist.BuildConfig -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentHomeBinding -import icu.nullptr.hidemyapplist.data.fetchLatestUpdate +import org.frknkrc44.hma_oss.BuildConfig +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.FragmentHomeBinding import icu.nullptr.hidemyapplist.hmaApp import icu.nullptr.hidemyapplist.service.ConfigManager -import icu.nullptr.hidemyapplist.service.PrefManager import icu.nullptr.hidemyapplist.service.ServiceClient import icu.nullptr.hidemyapplist.ui.activity.AboutActivity import icu.nullptr.hidemyapplist.ui.util.ThemeUtils.getColor @@ -29,9 +25,6 @@ import icu.nullptr.hidemyapplist.ui.util.ThemeUtils.themeColor import icu.nullptr.hidemyapplist.ui.util.makeToast import icu.nullptr.hidemyapplist.ui.util.navController import icu.nullptr.hidemyapplist.ui.util.setupToolbar -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.coroutines.withContext import java.io.IOException class HomeFragment : Fragment(R.layout.fragment_home) { @@ -109,7 +102,7 @@ class HomeFragment : Fragment(R.layout.fragment_home) { .setMessage(R.string.home_download_test_app_message) .setNegativeButton(android.R.string.cancel, null) .setPositiveButton(android.R.string.ok) { _, _ -> - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/Dr-TSNG/ApplistDetector/releases"))) + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/frknkrc44/HMA-OSS"))) } .show() } else startActivity(intent) @@ -121,11 +114,14 @@ class HomeFragment : Fragment(R.layout.fragment_home) { restoreSAFLauncher.launch("application/json") } + /* lifecycleScope.launch { loadUpdateDialog() } + */ } + @SuppressLint("StringFormatInvalid") override fun onStart() { super.onStart() val serviceVersion = ServiceClient.serviceVersion @@ -148,7 +144,7 @@ class HomeFragment : Fragment(R.layout.fragment_home) { binding.moduleStatus.setText(R.string.home_xposed_not_activated) } if (serviceVersion != 0) { - if (serviceVersion < icu.nullptr.hidemyapplist.common.BuildConfig.SERVICE_VERSION) { + if (serviceVersion < org.frknkrc44.hma_oss.common.BuildConfig.SERVICE_VERSION) { binding.serviceStatus.text = getString(R.string.home_xposed_service_old) } else { binding.serviceStatus.text = getString(R.string.home_xposed_service_on, serviceVersion) @@ -161,6 +157,7 @@ class HomeFragment : Fragment(R.layout.fragment_home) { } } + /* private suspend fun loadUpdateDialog() { if (PrefManager.disableUpdate) return val updateInfo = fetchLatestUpdate() ?: return @@ -192,4 +189,5 @@ class HomeFragment : Fragment(R.layout.fragment_home) { } } } + */ } diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/LogsFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/LogsFragment.kt index f583a26..456de60 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/LogsFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/LogsFragment.kt @@ -9,8 +9,8 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import by.kirich1409.viewbindingdelegate.viewBinding -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentLogsBinding +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.FragmentLogsBinding import icu.nullptr.hidemyapplist.hmaApp import icu.nullptr.hidemyapplist.service.PrefManager import icu.nullptr.hidemyapplist.service.ServiceClient diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/SettingsFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/SettingsFragment.kt index 6beeb33..a33e481 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/SettingsFragment.kt @@ -15,8 +15,8 @@ import androidx.preference.PreferenceFragmentCompat import androidx.preference.SwitchPreference import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentSettingsBinding +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.FragmentSettingsBinding import icu.nullptr.hidemyapplist.common.CommonUtils import icu.nullptr.hidemyapplist.common.Constants import icu.nullptr.hidemyapplist.hmaApp @@ -61,12 +61,9 @@ class SettingsFragment : Fragment(R.layout.fragment_settings), PreferenceFragmen "followSystemAccent" -> PrefManager.followSystemAccent "blackDarkTheme" -> PrefManager.blackDarkTheme "detailLog" -> ConfigManager.detailLog - "hideIcon" -> PrefManager.hideIcon "appDataIsolation" -> CommonUtils.isAppDataIsolationEnabled "voldAppDataIsolation" -> CommonUtils.isVoldAppDataIsolationEnabled "forceMountData" -> ConfigManager.forceMountData - "disableUpdate" -> PrefManager.disableUpdate - "receiveBetaUpdate" -> PrefManager.receiveBetaUpdate else -> throw IllegalArgumentException("Invalid key: $key") } } @@ -87,11 +84,8 @@ class SettingsFragment : Fragment(R.layout.fragment_settings), PreferenceFragmen "blackDarkTheme" -> PrefManager.blackDarkTheme = value "detailLog" -> ConfigManager.detailLog = value "forceMountData" -> ConfigManager.forceMountData = value - "hideIcon" -> PrefManager.hideIcon = value "appDataIsolation" -> Unit "voldAppDataIsolation" -> Unit - "disableUpdate" -> PrefManager.disableUpdate = value - "receiveBetaUpdate" -> PrefManager.receiveBetaUpdate = value else -> throw IllegalArgumentException("Invalid key: $key") } } diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateManageFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateManageFragment.kt index c118963..8fe38de 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateManageFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateManageFragment.kt @@ -11,8 +11,8 @@ import androidx.navigation.fragment.FragmentNavigatorExtras import androidx.recyclerview.widget.LinearLayoutManager import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.material.transition.MaterialContainerTransform -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentTemplateManageBinding +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.FragmentTemplateManageBinding import icu.nullptr.hidemyapplist.common.JsonConfig import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.adapter.TemplateAdapter diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateSettingsFragment.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateSettingsFragment.kt index a0f13c9..9f01924 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateSettingsFragment.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/fragment/TemplateSettingsFragment.kt @@ -11,8 +11,8 @@ import androidx.navigation.fragment.navArgs import by.kirich1409.viewbindingdelegate.viewBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.transition.MaterialContainerTransform -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.FragmentTemplateSettingsBinding +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.FragmentTemplateSettingsBinding import icu.nullptr.hidemyapplist.service.ConfigManager import icu.nullptr.hidemyapplist.ui.util.navController import icu.nullptr.hidemyapplist.ui.util.setupToolbar diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/util/ThemeUtils.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/util/ThemeUtils.kt index 5544945..5f95965 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/util/ThemeUtils.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/util/ThemeUtils.kt @@ -8,7 +8,7 @@ import androidx.annotation.ColorRes import androidx.annotation.StyleRes import androidx.fragment.app.Fragment import com.google.android.material.color.DynamicColors -import com.tsng.hidemyapplist.R +import org.frknkrc44.hma_oss.R import icu.nullptr.hidemyapplist.service.PrefManager import rikka.core.util.ResourceUtils diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/AppItemView.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/AppItemView.kt index c458cd1..f3fef03 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/AppItemView.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/AppItemView.kt @@ -5,7 +5,7 @@ import android.util.AttributeSet import android.widget.LinearLayout import by.kirich1409.viewbindingdelegate.CreateMethod import by.kirich1409.viewbindingdelegate.viewBinding -import com.tsng.hidemyapplist.databinding.AppItemViewBinding +import org.frknkrc44.hma_oss.databinding.AppItemViewBinding import icu.nullptr.hidemyapplist.util.PackageHelper class AppItemView @JvmOverloads constructor( diff --git a/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/ListItemView.kt b/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/ListItemView.kt index 28100c2..244e0f6 100644 --- a/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/ListItemView.kt +++ b/app/src/main/java/icu/nullptr/hidemyapplist/ui/view/ListItemView.kt @@ -6,8 +6,8 @@ import android.widget.LinearLayout import androidx.annotation.DrawableRes import by.kirich1409.viewbindingdelegate.CreateMethod import by.kirich1409.viewbindingdelegate.viewBinding -import com.tsng.hidemyapplist.R -import com.tsng.hidemyapplist.databinding.ListItemViewBinding +import org.frknkrc44.hma_oss.R +import org.frknkrc44.hma_oss.databinding.ListItemViewBinding class ListItemView @JvmOverloads constructor( context: Context, diff --git a/app/src/main/res/drawable/cont_fk.webp b/app/src/main/res/drawable/cont_fk.webp new file mode 100644 index 0000000000000000000000000000000000000000..248af7e854a41112bed412c79182943829d0e276 GIT binary patch literal 29866 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 - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml index e22d0d9..52d7c62 100644 --- a/app/src/main/res/values-ar-rSA/strings.xml +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS القائمة الرئيسية السجلات الإعدادات @@ -34,7 +34,7 @@ خدمـة النظـام تعمـل [%d] خدمـة النظـام متوقفة تـم تحديث الوحـدة، تحتاج إلي إعادة التشغيل - Hide My Applist قام بتصفية إجمالي %d من الطلبات + HMA-OSS قام بتصفية إجمالي %d من الطلبات الإدارة اختبار الاكتشاف تنزيل تطبيق الاختبار diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-ca-rES/strings.xml +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml index 8df39d2..ff25799 100644 --- a/app/src/main/res/values-cs-rCZ/strings.xml +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Domů Logy Nastavení @@ -34,7 +34,7 @@ Systémová služba běží [%d] Systémová služba neběží Modul aktualizován, je třeba restartovat - Hide My Applist odfiltroval celkem %d požadavků + HMA-OSS odfiltroval celkem %d požadavků Spravovat Detekční test Stáhněte si testovací aplikaci diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-da-rDK/strings.xml +++ b/app/src/main/res/values-da-rDK/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml index 438f05f..66b82dc 100644 --- a/app/src/main/res/values-el-rGR/strings.xml +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Αρχική Logs Ρυθμίσεις @@ -34,7 +34,7 @@ Η υπηρεσία συστήματος εκτελείται [%d] Η υπηρεσία συστήματος δεν εκτελείται Module updated, need reboot - Το Hide My Applist έχει φιλτράρει συνολικά %d αιτήματα + Το HMA-OSS έχει φιλτράρει συνολικά %d αιτήματα Διαχείριση Τέστ εντοπισμού Λήψη της τεστ εφαρμογής diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-fi-rFI/strings.xml +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index e3495d6..b5d61db 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Accueil Journal Réglages diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index 358ee7d..55e86a9 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Impostazioni @@ -34,7 +34,7 @@ Servizio di sistema in esecuzione [%d] Servizio di sistema stoppato Modulo aggiornato, in attesa di riavvio - Hide My Applist ha filtrato in totale %d richieste + HMA-OSS ha filtrato in totale %d richieste Gestisci Test di rilevamento Scarica app di test diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-iw-rIL/strings.xml +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 3c6ef82..32a22b3 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS ホーム ログ 設定 @@ -34,7 +34,7 @@ システムサービスの実行中 [%d] システムサービスは実行されていません モジュールが更新されました。再起動してください。 - Hide My Applist は合計 %d リクエストをフィルタリングしました + HMA-OSS は合計 %d リクエストをフィルタリングしました 管理 検出のテスト テストアプリのダウンロード diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-nl-rNL/strings.xml +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml index 67094aa..989d748 100644 --- a/app/src/main/res/values-no-rNO/strings.xml +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Hjem Logger Innstillinger diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 5d43b30..294ac53 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -34,7 +34,7 @@ Uruchomiona usługa systemowa [%d] Usługa systemowa nie działa Moduł zaktualizowany, wymaga ponownego uruchomienia - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Zarządzanie Test wykrywalności Pobierz aplikację testową diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 7db1e8a..d29e936 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Início Registros Configurações @@ -34,7 +34,7 @@ Serviço do sistema funcionando [%d] Serviço do sistema não está funcionando Módulo atualizado, precisa reiniciar - Hide My Applist foi filtrado total %d requisitos + HMA-OSS foi filtrado total %d requisitos Gerenciar Teste de detecção Baixar aplicativo de teste diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-pt-rPT/strings.xml +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 041f3f5..43c8a25 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Главная Логи Настройки @@ -34,7 +34,7 @@ Системная служба работает [%d] Системная служба не работает Модуль был обновлён, требуется перезагрузка - Всего Hide My Applist отфильтровал %d запросов + Всего HMA-OSS отфильтровал %d запросов Управление Проверка на обнаружение Скачать приложение для проверки diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-sr-rSP/strings.xml +++ b/app/src/main/res/values-sr-rSP/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index 9034fcd..14cb870 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs Settings @@ -34,7 +34,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index 3f10b31..bba05e2 100644 --- a/app/src/main/res/values-uk-rUA/strings.xml +++ b/app/src/main/res/values-uk-rUA/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Головна Журнали Налаштування @@ -34,7 +34,7 @@ Системна служба працює [%d] Системна служба не працює Модуль оновлено, потрібно перезавантажити - Hide My Applist відфільтрував %d запитів + HMA-OSS відфільтрував %d запитів Керувати Перевірка на виявлення Завантажити додаток для перевірки diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml index 9677660..c80c539 100644 --- a/app/src/main/res/values-vi-rVN/strings.xml +++ b/app/src/main/res/values-vi-rVN/strings.xml @@ -34,7 +34,7 @@ Dịch vụ HMA đang chạy [%d] Dịch vụ HMA không chạy Mô đun đã cập nhật, cần khởi động lại máy - Hide My Applist đã lọc tổng cộng %d yêu cầu + HMA-OSS đã lọc tổng cộng %d yêu cầu Quản lý Kiểm thử Tải ứng dụng kiểm thử diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b5a3bb4..8532779 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,6 +1,6 @@ - Hide My Applist + HMA-OSS Home Logs @@ -11,6 +11,7 @@ Select apps App settings About + About this fork Do not install HMA to secondary user Show crash log @@ -37,7 +38,7 @@ System service running [%d] System service not running Module updated, need reboot - Hide My Applist has filtered total %d requests + HMA-OSS has filtered total %d requests Manage Detection test Download test app @@ -141,6 +142,9 @@ Although It is incorrect to detect specific app installation, yet not every app using root provides random package name support. In this case, detected apps that use root (such as Fake Location and Storage Isolation) is equal to detected root itself.\n\nAt the same time, some smart apps use various loopholes to acquire your app list, so that it can draw a persona for you.\n\nThis module provides some methods to test whether you have already hidden your applist nicely. Also, it can work as an Xposed module to hide some apps or reject app list requests to protect your privacy. + + The original HMA project has become closed-source and their latest code didn\'t contain some of the latest changes, so I created this fork to continue it as open-source again. + How to use this module You can create templates in \"Template manage\".\nThen apply the templates to apps in \"App manage\". (You can also select extra apps for targets.)\nYou should and ONLY should check \"System Framework\" in Xposed module scope / whitelist. diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml index 86cac19..75b49d8 100644 --- a/app/src/main/res/xml/settings.xml +++ b/app/src/main/res/xml/settings.xml @@ -8,10 +8,12 @@ android:key="language" android:summary="%s" android:title="@string/settings_language" /> + @@ -63,11 +65,6 @@ android:key="maxLogSize" android:summary="%s" android:title="@string/settings_max_log_size" /> - @@ -83,6 +80,7 @@ android:title="@string/settings_force_clean_env" /> + diff --git a/common/build.gradle.kts b/common/build.gradle.kts index b157aa9..f95259c 100644 --- a/common/build.gradle.kts +++ b/common/build.gradle.kts @@ -10,7 +10,7 @@ val serviceVerCode: Int by rootProject.extra val minBackupVerCode: Int by rootProject.extra android { - namespace = "icu.nullptr.hidemyapplist.common" + namespace = "org.frknkrc44.hma_oss.common" buildFeatures { aidl = true diff --git a/common/src/main/java/icu/nullptr/hidemyapplist/common/Constants.java b/common/src/main/java/icu/nullptr/hidemyapplist/common/Constants.java index ab98a84..ef8848a 100644 --- a/common/src/main/java/icu/nullptr/hidemyapplist/common/Constants.java +++ b/common/src/main/java/icu/nullptr/hidemyapplist/common/Constants.java @@ -4,7 +4,7 @@ import java.util.Set; public class Constants { - public static final String APP_PACKAGE_NAME = "com.tsng.hidemyapplist"; + public static final String APP_PACKAGE_NAME = "org.frknkrc44.hma_oss"; public static final String PROVIDER_AUTHORITY = APP_PACKAGE_NAME + ".ServiceProvider"; public static final String GMS_PACKAGE_NAME = "com.google.android.gms"; diff --git a/common/src/main/java/icu/nullptr/hidemyapplist/common/JsonConfig.kt b/common/src/main/java/icu/nullptr/hidemyapplist/common/JsonConfig.kt index b02051f..2da03c0 100644 --- a/common/src/main/java/icu/nullptr/hidemyapplist/common/JsonConfig.kt +++ b/common/src/main/java/icu/nullptr/hidemyapplist/common/JsonConfig.kt @@ -1,9 +1,9 @@ package icu.nullptr.hidemyapplist.common import kotlinx.serialization.Serializable -import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json +import org.frknkrc44.hma_oss.common.BuildConfig private val encoder = Json { encodeDefaults = true diff --git a/settings.gradle.kts b/settings.gradle.kts index 313619d..b8ae5ed 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,7 +18,7 @@ dependencyResolutionManagement { } } -rootProject.name = "HideMyApplist" +rootProject.name = "HMA-OSS" include( ":app", diff --git a/xposed/build.gradle.kts b/xposed/build.gradle.kts index acec829..f691c1d 100644 --- a/xposed/build.gradle.kts +++ b/xposed/build.gradle.kts @@ -10,7 +10,7 @@ plugins { } android { - namespace = "icu.nullptr.hidemyapplist.xposed" + namespace = "org.frknkrc44.hma_oss.xposed" buildFeatures { buildConfig = false diff --git a/xposed/src/main/java/icu/nullptr/hidemyapplist/xposed/HMAService.kt b/xposed/src/main/java/icu/nullptr/hidemyapplist/xposed/HMAService.kt index c045416..cc776b1 100644 --- a/xposed/src/main/java/icu/nullptr/hidemyapplist/xposed/HMAService.kt +++ b/xposed/src/main/java/icu/nullptr/hidemyapplist/xposed/HMAService.kt @@ -5,6 +5,7 @@ import android.content.pm.IPackageManager import android.os.Build import icu.nullptr.hidemyapplist.common.* import icu.nullptr.hidemyapplist.xposed.hook.* +import org.frknkrc44.hma_oss.common.BuildConfig import java.io.File import java.util.concurrent.ExecutorService import java.util.concurrent.Executors diff --git a/xposed/src/main/java/icu/nullptr/hidemyapplist/xposed/UserService.kt b/xposed/src/main/java/icu/nullptr/hidemyapplist/xposed/UserService.kt index 6568967..d38f067 100644 --- a/xposed/src/main/java/icu/nullptr/hidemyapplist/xposed/UserService.kt +++ b/xposed/src/main/java/icu/nullptr/hidemyapplist/xposed/UserService.kt @@ -6,8 +6,8 @@ import android.content.pm.IPackageManager import android.os.Build import android.os.Bundle import android.os.ServiceManager -import icu.nullptr.hidemyapplist.common.BuildConfig import icu.nullptr.hidemyapplist.common.Constants +import org.frknkrc44.hma_oss.common.BuildConfig import rikka.hidden.compat.ActivityManagerApis import rikka.hidden.compat.adapter.UidObserverAdapter