feat(core): disable permission requests
This commit is contained in:
@@ -502,6 +502,10 @@
|
||||
"name": "Block Ads",
|
||||
"description": "Prevents Advertisements from being displayed"
|
||||
},
|
||||
"disable_permission_requests": {
|
||||
"name": "Disable Permission Requests",
|
||||
"description": "Prevents Snapchat from asking for specific permissions"
|
||||
},
|
||||
"disable_memories_snap_feed": {
|
||||
"name": "Disable Memories Snap Feed",
|
||||
"description": "Prevents Snapchat from showing recent memories when you swipe up in camera"
|
||||
@@ -878,6 +882,17 @@
|
||||
"disable_cameras":{
|
||||
"front": "Front Camera",
|
||||
"back": "Back Camera"
|
||||
},
|
||||
"disable_permission_requests": {
|
||||
"notifications": "Notifications",
|
||||
"read_media_images": "Read Media Images",
|
||||
"read_media_video": "Read Media Video",
|
||||
"camera": "Camera",
|
||||
"microphone": "Microphone",
|
||||
"location": "Location",
|
||||
"read_contacts": "Read Contacts",
|
||||
"nearby_devices": "Nearby Devices",
|
||||
"phone_calls": "Phone Calls"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -4,6 +4,20 @@ import me.rhunk.snapenhance.common.config.ConfigContainer
|
||||
import me.rhunk.snapenhance.common.config.FeatureNotice
|
||||
|
||||
class Global : ConfigContainer() {
|
||||
companion object {
|
||||
val permissionMap = mapOf(
|
||||
"android.permission.POST_NOTIFICATIONS" to "notifications",
|
||||
"android.permission.READ_MEDIA_IMAGES" to "read_media_images",
|
||||
"android.permission.READ_MEDIA_VIDEO" to "read_media_video",
|
||||
"android.permission.CAMERA" to "camera",
|
||||
"android.permission.ACCESS_FINE_LOCATION" to "location",
|
||||
"android.permission.RECORD_AUDIO" to "microphone",
|
||||
"android.permission.READ_CONTACTS" to "read_contacts",
|
||||
"android.permission.BLUETOOTH_CONNECT" to "nearby_devices",
|
||||
"android.permission.READ_PHONE_STATE" to "phone_calls",
|
||||
)
|
||||
}
|
||||
|
||||
inner class SpoofLocation : ConfigContainer(hasGlobalState = true) {
|
||||
val coordinates = mapCoordinates("coordinates", 0.0 to 0.0) { requireRestart()} // lat, long
|
||||
}
|
||||
@@ -14,6 +28,7 @@ class Global : ConfigContainer() {
|
||||
val disableMetrics = boolean("disable_metrics") { requireRestart() }
|
||||
val disableStorySections = multiple("disable_story_sections", "friends", "following", "discover") { requireRestart(); requireCleanCache() }
|
||||
val blockAds = boolean("block_ads")
|
||||
val disablePermissionRequests = multiple("disable_permission_requests", *permissionMap.values.toTypedArray()) { requireRestart(); addNotices(FeatureNotice.UNSTABLE) }
|
||||
val disableMemoriesSnapFeed = boolean("disable_memories_snap_feed")
|
||||
val spotlightCommentsUsername = boolean("spotlight_comments_username") { requireRestart() }
|
||||
val bypassVideoLengthRestriction = unique("bypass_video_length_restriction", "split", "single") { addNotices(
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
package me.rhunk.snapenhance.core.features.impl.tweaks
|
||||
|
||||
import android.content.ContextWrapper
|
||||
import android.content.pm.PackageManager
|
||||
import me.rhunk.snapenhance.common.config.impl.Global
|
||||
import me.rhunk.snapenhance.core.features.Feature
|
||||
import me.rhunk.snapenhance.core.features.FeatureLoadParams
|
||||
import me.rhunk.snapenhance.core.util.hook.HookStage
|
||||
import me.rhunk.snapenhance.core.util.hook.hook
|
||||
|
||||
class DisablePermissionRequests : Feature("Disable Permission Requests", loadParams = FeatureLoadParams.INIT_SYNC) {
|
||||
override fun init() {
|
||||
val deniedPermissions by context.config.global.disablePermissionRequests
|
||||
if (deniedPermissions.isEmpty()) return
|
||||
|
||||
ContextWrapper::class.java.hook("checkPermission", HookStage.BEFORE) { param ->
|
||||
val permission = param.arg<String>(0)
|
||||
val permissionKey = Global.permissionMap[permission] ?: return@hook
|
||||
if (deniedPermissions.contains(permissionKey)) {
|
||||
param.setResult(PackageManager.PERMISSION_GRANTED)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import me.rhunk.snapenhance.core.features.impl.messaging.*
|
||||
import me.rhunk.snapenhance.core.features.impl.spying.*
|
||||
import me.rhunk.snapenhance.core.features.impl.tweaks.BypassScreenshotDetection
|
||||
import me.rhunk.snapenhance.core.features.impl.tweaks.CameraTweaks
|
||||
import me.rhunk.snapenhance.core.features.impl.tweaks.DisablePermissionRequests
|
||||
import me.rhunk.snapenhance.core.features.impl.tweaks.PreventMessageListAutoScroll
|
||||
import me.rhunk.snapenhance.core.features.impl.tweaks.UnsaveableMessages
|
||||
import me.rhunk.snapenhance.core.features.impl.ui.*
|
||||
@@ -117,6 +118,7 @@ class FeatureManager(
|
||||
SpotlightCommentsUsername(),
|
||||
OperaViewerParamsOverride(),
|
||||
StealthModeIndicator(),
|
||||
DisablePermissionRequests(),
|
||||
)
|
||||
|
||||
initializeFeatures()
|
||||
|
||||
Reference in New Issue
Block a user