feat(core): disable custom tabs

This commit is contained in:
rhunk
2024-04-26 11:52:29 +02:00
parent b123897685
commit b92378bffd
4 changed files with 25 additions and 0 deletions

View File

@@ -648,6 +648,10 @@
"name": "Block Ads",
"description": "Prevents Advertisements from being displayed"
},
"disable_custom_tabs": {
"name": "Disable Custom Tabs",
"description": "Opens links in supported applications rather than in the Web Browser"
},
"disable_permission_requests": {
"name": "Disable Permission Requests",
"description": "Prevents Snapchat from asking for specific permissions"

View File

@@ -32,6 +32,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 disableCustomTabs = boolean("disable_custom_tabs") { requireRestart() }
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() }

View File

@@ -127,6 +127,7 @@ class FeatureManager(
AutoOpenSnaps(),
CustomStreaksExpirationFormat(),
ComposerHooks(),
DisableCustomTabs(),
)
initializeFeatures()

View File

@@ -0,0 +1,19 @@
package me.rhunk.snapenhance.core.features.impl.global
import android.content.Intent
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 DisableCustomTabs: Feature("Disable Custom Tabs", loadParams = FeatureLoadParams.ACTIVITY_CREATE_SYNC) {
override fun onActivityCreate() {
if (!context.config.global.disableCustomTabs.get()) return
context.mainActivity!!.packageManager.javaClass.hook("resolveService", HookStage.BEFORE) { param ->
val intent = param.arg<Intent>(0)
if (intent.action == "android.support.customtabs.action.CustomTabsService") {
param.setResult(null)
}
}
}
}