feat: camera disabler (#52)

Co-authored-by: rhunk <101876869+rhunk@users.noreply.github.com>
This commit is contained in:
auth 2023-06-09 16:25:06 +02:00 committed by GitHub
parent 20c1f6a779
commit bef74a3c77
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 0 deletions

View File

@ -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",

View File

@ -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",

View File

@ -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)