diff --git a/app/src/main/java/moe/fuqiuluo/portal/ext/Perfs.kt b/app/src/main/java/moe/fuqiuluo/portal/ext/Perfs.kt index d11ec69..2c6dc3e 100644 --- a/app/src/main/java/moe/fuqiuluo/portal/ext/Perfs.kt +++ b/app/src/main/java/moe/fuqiuluo/portal/ext/Perfs.kt @@ -96,6 +96,13 @@ var Context.needDowngradeToCdma: Boolean putBoolean("needDowngradeToCdma", value) } +var Context.hookSensor: Boolean + get() = sharedPrefs.getBoolean("hookSensor", false) + + set(value) = sharedPrefs.edit { + putBoolean("hookSensor", value) + } + //var Context.updateInterval: Long // get() = sharedPrefs.getLong("updateInterval", FakeLoc.updateInterval) // diff --git a/app/src/main/java/moe/fuqiuluo/portal/ui/mock/MockFragment.kt b/app/src/main/java/moe/fuqiuluo/portal/ui/mock/MockFragment.kt index 8fc7d5a..cbea3d2 100644 --- a/app/src/main/java/moe/fuqiuluo/portal/ui/mock/MockFragment.kt +++ b/app/src/main/java/moe/fuqiuluo/portal/ui/mock/MockFragment.kt @@ -28,6 +28,7 @@ import moe.fuqiuluo.portal.databinding.FragmentMockBinding import moe.fuqiuluo.portal.ext.altitude import moe.fuqiuluo.portal.ext.drawOverOtherAppsEnabled import moe.fuqiuluo.portal.ext.historicalLocations +import moe.fuqiuluo.portal.ext.hookSensor import moe.fuqiuluo.portal.ext.needOpenSELinux import moe.fuqiuluo.portal.ext.rawHistoricalLocations import moe.fuqiuluo.portal.ext.selectLocation @@ -223,14 +224,17 @@ class MockFragment : Fragment() { } if (ShellUtils.hasRoot()) { - ShellUtils.setEnforceMode(false) // 关闭SELinux - if(MockServiceHelper.loadPortalLibrary(requireContext())) { - showToast("传感器劫持成功") - } else { - showToast("无法劫持传感器") - } - if (requireContext().needOpenSELinux) { - ShellUtils.setEnforceMode(true) + if (requireContext().hookSensor) { + ShellUtils.setEnforceMode(false) // 关闭SELinux + if(MockServiceHelper.loadPortalLibrary(requireContext())) { + showToast("传感器劫持成功") + } else { + showToast("无法劫持传感器") + } + + if (requireContext().needOpenSELinux) { + ShellUtils.setEnforceMode(true) + } } } diff --git a/app/src/main/java/moe/fuqiuluo/portal/ui/settings/SettingsFragment.kt b/app/src/main/java/moe/fuqiuluo/portal/ui/settings/SettingsFragment.kt index cd5d414..baefa21 100644 --- a/app/src/main/java/moe/fuqiuluo/portal/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/moe/fuqiuluo/portal/ui/settings/SettingsFragment.kt @@ -26,6 +26,7 @@ import moe.fuqiuluo.portal.ext.debug import moe.fuqiuluo.portal.ext.disableFusedProvider import moe.fuqiuluo.portal.ext.disableGetCurrentLocation import moe.fuqiuluo.portal.ext.disableRegitserLocationListener +import moe.fuqiuluo.portal.ext.hookSensor import moe.fuqiuluo.portal.ext.needDowngradeToCdma import moe.fuqiuluo.portal.ext.needOpenSELinux import moe.fuqiuluo.portal.ext.rawHistoricalLocations @@ -175,6 +176,18 @@ class SettingsFragment : Fragment() { } }) + binding.sensorHookSwitch.isChecked = context.hookSensor + binding.sensorHookSwitch.setOnCheckedChangeListener(object: CompoundButton.OnCheckedChangeListener { + override fun onCheckedChanged( + buttonView: CompoundButton?, + isChecked: Boolean + ) { + context.hookSensor = isChecked + showToast("重新启动生效") + updateRemoteConfig() + } + }) + return root } diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 273ed4e..4f00821 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -379,6 +379,44 @@ android:layout_gravity="center_vertical" app:useMaterialThemeColors="true"/> + + + + + + + + + + \ No newline at end of file