Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions .github/workflows/build_apk.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,19 @@ jobs:
run: |
zip -r ./TouchHelper.zip ./release

- name: Get git revision
- name: Get release version
id: get_git_revision
run: |
echo "tag_name=$(($(git rev-list HEAD --count) + 100))" >> $GITHUB_OUTPUT
echo "release_name=$(($(git rev-list HEAD --count) + 100))" >> $GITHUB_OUTPUT
python3 - <<'PY'
import json, os
with open('app/build/outputs/apk/release/output-metadata.json') as metadata:
version = json.load(metadata)['elements'][0]['versionCode']
with open(os.environ['GITHUB_OUTPUT'], 'a') as output:
output.write(f'tag_name={version}\nrelease_name={version}\n')
PY

- name: Create Release and Upload APK
if: github.event_name == 'push' && github.ref == 'refs/heads/master'
uses: softprops/action-gh-release@v3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
10 changes: 4 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
apply plugin: 'com.android.application'

// http://www.race604.com/android-auto-version/
// use git count as build number, as current date as build version
// Keep release codes explicit: squash merges can reduce the Git commit count and
// produce a versionCode lower than an APK that has already been distributed.
def getDate() {
def date = new Date()
def formattedDate = date.format('yyyy.MM.dd')
return formattedDate
}
def cmd = 'git rev-list HEAD --count'
def gitVersion = cmd.execute().text.trim().toInteger() + 100
def appVersion = getDate()


Expand All @@ -24,7 +22,7 @@ android {
applicationId "com.zfdang.touchhelper"
minSdkVersion 26
targetSdkVersion 36
versionCode gitVersion
versionCode 278
versionName appVersion

// Enabling multidex support.
Expand Down Expand Up @@ -103,4 +101,4 @@ dependencies {

// https://mvnrepository.com/artifact/com.belerweb/pinyin4j
implementation group: 'com.belerweb', name: 'pinyin4j', version: '2.5.1'
}
}
15 changes: 14 additions & 1 deletion app/src/main/res/layout/fragment_about.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,19 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView_app_introduction" />

<TextView
android:id="@+id/textView_privacy_policy"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:autoLink="web"
android:linksClickable="true"
android:paddingStart="12dp"
android:paddingEnd="12dp"
android:text="@string/about_privacy_policy"
android:textSize="16sp"
app:layout_constraintTop_toBottomOf="@id/textView_weblink" />

<TextView
android:id="@+id/textView_copyright"
android:layout_width="wrap_content"
Expand All @@ -75,4 +88,4 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
3 changes: 2 additions & 1 deletion app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
</string>

<string name="about_weblink">https://touchhelper.zfdang.com/</string>
<string name="about_privacy_policy">隐私政策:\nhttps://touchhelper.zfdang.com/privacy.html</string>
<string name="about_copyright">Copyright © 2022 Zhengfa Dang</string>

<string name="app_version">版本: %s (%d)</string>
Expand All @@ -35,4 +36,4 @@
<string name="accessibility_disclosure_agree_only">同意</string>
<string name="accessibility_disclosure_reminder">开屏跳过:请打开应用并确认无障碍服务说明后,跳过功能才会开始工作</string>
<string name="accessibility_disclosure_cancel">取消</string>
</resources>
</resources>
33 changes: 22 additions & 11 deletions docs/privacy.html
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,12 @@
<!-- English Content -->
<div class="content-en active" id="content-en">
<h1>Privacy Policy</h1>
<p class="date">Last updated: January 4, 2026</p>
<p class="date">Last updated: October 11, 2026</p>

<div class="highlight">
<strong>Summary:</strong> Touch Helper is an open-source application that does NOT collect, store, or
transmit any personal data. Your privacy is fully protected.
<strong>Summary:</strong> Touch Helper processes screen controls on your device to skip splash ads.
It has no network permission and does not collect or share data off-device. Rules you explicitly
create are saved locally; copying or exporting controls and rules is performed only at your request.
</div>

<h2>Introduction</h2>
Expand All @@ -135,14 +136,21 @@ <h2>Accessibility Service</h2>
screen advertisements. This service:</p>
<ul>
<li>Only monitors screen content to identify skip buttons</li>
<li>Does NOT record or store any screen content</li>
<li>Automatically detected controls are compared in memory and are not saved</li>
<li>Custom rules save the selected app, control text, description and coordinates locally</li>
<li>The copy-window-controls and export-rules actions place the information you request on the system clipboard</li>
<li>Does NOT transmit any data externally</li>
<li>Operates entirely on your device</li>
</ul>
<p>The service reads interface control text, descriptions and positions, rather than taking screenshots.
Before it can read any interface content, the App displays a disclosure and requires your agreement.
You can disable the service in Android Accessibility settings at any time.</p>

<h2>Data Storage</h2>
<p>All app settings and configurations are stored locally on your device. No data is ever uploaded to external
servers.</p>
<p>Settings, your disclosure choice and custom skip rules are stored in the App's local data. You can delete
rules in settings or clear all local data through Android's app settings. Android may back up app settings
according to your system backup preferences; the App does not operate a server or upload data itself.
When you copy controls or export rules, other apps you paste into may receive that information.</p>

<h2>Third-Party Services</h2>
<p>The App does not integrate any third-party services, SDKs, or analytics tools.</p>
Expand All @@ -166,10 +174,10 @@ <h2>Contact Us</h2>
<!-- Chinese Content -->
<div class="content-zh" id="content-zh">
<h1>隐私政策</h1>
<p class="date">最后更新:2026年1月4日</p>
<p class="date">最后更新:2026年10月11日</p>

<div class="highlight">
<strong>概要:</strong>开屏跳过是一款开源应用程序,不会收集、存储或传输任何个人数据。您的隐私受到完全保护。
<strong>概要:</strong>开屏跳过在设备本地处理界面控件,以跳过开屏广告。应用没有网络权限,不会在设备之外收集或分享数据。您主动创建的规则保存在本机;复制控件或导出规则仅按您的操作执行。
</div>

<h2>简介</h2>
Expand All @@ -190,13 +198,16 @@ <h2>无障碍服务</h2>
<p>本应用使用 Android 的无障碍服务来检测并自动点击开屏广告上的"跳过"按钮。此服务:</p>
<ul>
<li>仅监控屏幕内容以识别跳过按钮</li>
<li>不会记录或存储任何屏幕内容</li>
<li>自动检测的控件仅在内存中即时比对,不保存</li>
<li>自定义规则会将所选应用、控件文字、描述和坐标保存在本机</li>
<li>复制窗口控件和导出规则功能会将您要求复制的信息放入系统剪贴板</li>
<li>不会向外部传输任何数据</li>
<li>完全在您的设备上本地运行</li>
</ul>

<h2>数据存储</h2>
<p>所有应用设置和配置都存储在您设备的本地。不会有任何数据上传到外部服务器。</p>
<p>服务读取界面控件的文字、描述和位置,不截取屏幕图片。读取界面内容前,应用会显示说明并要求您明确同意。您可以随时在安卓无障碍设置中关闭服务。</p>
<p>设置、同意记录和自定义跳过规则保存在应用的本地数据中。您可以在设置中删除规则,或在安卓应用设置中清除全部本地数据。安卓系统可能根据您的系统备份设置备份应用配置;应用本身不运营服务器,也不主动上传数据。复制控件或导出规则后,您粘贴信息的其他应用可能获得这些信息。</p>

<h2>第三方服务</h2>
<p>本应用不集成任何第三方服务、SDK 或分析工具。</p>
Expand Down Expand Up @@ -239,4 +250,4 @@ <h2>联系我们</h2>
</script>
</body>

</html>
</html>