commit bef74a3c7769390512b641322e41a1b88b0533dc
parent 20c1f6a7793f82d1d385cf9d04b61d65478e29f1
Author: auth <64337177+authorisation@users.noreply.github.com>
Date:   Fri,  9 Jun 2023 16:25:06 +0200

feat: camera disabler (#52)

Co-authored-by: rhunk <101876869+rhunk@users.noreply.github.com>
Diffstat:
Mapp/src/main/assets/lang/en_US.json | 1+
Mapp/src/main/kotlin/me/rhunk/snapenhance/config/ConfigProperty.kt | 6++++++
Mapp/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/CameraTweaks.kt | 18++++++++++++++++++
3 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/app/src/main/assets/lang/en_US.json b/app/src/main/assets/lang/en_US.json @@ -60,6 +60,7 @@ "longitude_value": "Longitude", "hide_ui_elements": "Hide UI Elements", "auto_updater": "Auto Updater", + "disable_camera": "Disable Camera", "infinite_story_boost": "Infinite Story Boost", "enable_app_appearance": "Enable App Appearance Settings", "disable_spotlight": "Disable Spotlight", diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigProperty.kt b/app/src/main/kotlin/me/rhunk/snapenhance/config/ConfigProperty.kt @@ -177,6 +177,12 @@ enum class ConfigProperty( ), //UI AND TWEAKS + CAMERA_DISABLE( + "property.disable_camera", + "description.disable_camera", + ConfigCategory.UI_TWEAKS, + ConfigStateValue(false) + ), HIDE_UI_ELEMENTS( "property.hide_ui_elements", "description.hide_ui_elements", diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/CameraTweaks.kt b/app/src/main/kotlin/me/rhunk/snapenhance/features/impl/tweaks/CameraTweaks.kt @@ -1,12 +1,17 @@ package me.rhunk.snapenhance.features.impl.tweaks +import android.Manifest import android.annotation.SuppressLint +import android.app.admin.DevicePolicyManager +import android.content.ContextWrapper +import android.content.pm.PackageManager import me.rhunk.snapenhance.config.ConfigProperty import me.rhunk.snapenhance.data.wrapper.impl.ScSize import me.rhunk.snapenhance.features.Feature import me.rhunk.snapenhance.features.FeatureLoadParams import me.rhunk.snapenhance.features.impl.ConfigEnumKeys import me.rhunk.snapenhance.hook.HookStage +import me.rhunk.snapenhance.hook.hook import me.rhunk.snapenhance.hook.hookConstructor class CameraTweaks : Feature("Camera Tweaks", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) { @@ -20,6 +25,19 @@ class CameraTweaks : Feature("Camera Tweaks", loadParams = FeatureLoadParams.ACT @SuppressLint("MissingPermission", "DiscouragedApi") override fun onActivityCreate() { + if (context.config.bool(ConfigProperty.CAMERA_DISABLE)) { + ContextWrapper::class.java.hook("checkPermission", HookStage.BEFORE) { param -> + val permission = param.arg<String>(0) + if (permission == Manifest.permission.CAMERA) { + param.setResult(PackageManager.PERMISSION_GRANTED) + } + } + + DevicePolicyManager::class.java.hook("getCameraDisabled", HookStage.BEFORE) { param -> + param.setResult(true) + } + } + ConfigEnumKeys.hookAllEnums(context.mappings.getMappedClass("enums", "CAMERA")) { if (key == "FORCE_CAMERA_HIGHEST_FPS" && context.config.bool(ConfigProperty.FORCE_HIGHEST_FRAME_RATE)) { set(true)