Skip to content

Commit c8d3e08

Browse files
authored
✨ Add Privacy Policy activity and HTML file, update manifest and buil… (#78)
1 parent 79ed03f commit c8d3e08

4 files changed

Lines changed: 328 additions & 1 deletion

File tree

android/app/build.gradle

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ android {
5555
compileSdk = flutter.compileSdkVersion
5656
ndkVersion = globalProperties.getProperty('flutter.ndkVersion')
5757

58+
// BuildConfig-Feature aktivieren
59+
buildFeatures {
60+
buildConfig true
61+
}
62+
5863
compileOptions {
5964
sourceCompatibility JavaVersion.VERSION_17
6065
targetCompatibility JavaVersion.VERSION_17
@@ -69,6 +74,9 @@ android {
6974
targetSdk = flutter.targetSdkVersion
7075
versionCode = flutterVersionCode.toInteger()
7176
versionName = flutterVersionName
77+
78+
// BuildConfig-Felder für die Privacy Policy
79+
buildConfigField "String", "PRIVACY_POLICY_URL", "\"https://movetopia.de/privacy.html\""
7280
}
7381

7482
signingConfigs {
@@ -111,3 +119,7 @@ android {
111119
flutter {
112120
source = "../.."
113121
}
122+
123+
dependencies {
124+
implementation "androidx.appcompat:appcompat:1.7.0"
125+
}

android/app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,16 @@
5858
<category android:name="android.intent.category.DEFAULT" />
5959
</intent-filter>
6060
</activity>
61+
<activity
62+
android:name=".PrivacyPolicyActivity"
63+
android:exported="true"
64+
android:theme="@style/Theme.AppCompat.NoActionBar">
65+
</activity>
6166
<activity-alias
6267
android:name="ViewPermissionUsageActivity"
6368
android:exported="true"
6469
android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
65-
android:targetActivity=".MainActivity">
70+
android:targetActivity=".PrivacyPolicyActivity">
6671
<intent-filter>
6772
<action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
6873
<category android:name="android.intent.category.HEALTH_PERMISSIONS" />
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package de.movetopia
2+
3+
import android.content.Intent
4+
import android.net.Uri
5+
import android.os.Bundle
6+
import androidx.appcompat.app.AppCompatActivity
7+
import de.movetopia.BuildConfig
8+
9+
/**
10+
* Activity to show privacy policy.
11+
* This activity is used as a target for the Health Connect app's
12+
* permission usage screen and automatically opens the privacy policy in the browser.
13+
*/
14+
class PrivacyPolicyActivity : AppCompatActivity() {
15+
16+
override fun onCreate(savedInstanceState: Bundle?) {
17+
super.onCreate(savedInstanceState)
18+
19+
// Nutze die URL aus den BuildConfig-Feldern
20+
val privacyPolicyUrl = BuildConfig.PRIVACY_POLICY_URL
21+
22+
// Open privacy policy in browser
23+
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(privacyPolicyUrl))
24+
startActivity(intent)
25+
26+
// Finish this activity after opening the browser
27+
finish()
28+
}
29+
}

privacy.html

Lines changed: 281 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,281 @@
1+
<!DOCTYPE html>
2+
<html lang="de">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta content="width=device-width, initial-scale=1.0" name="viewport">
6+
<title>Datenschutzerklärung - MoveTopia</title>
7+
<link href="/app_icon.png" rel="icon" type="image/png">
8+
<style>
9+
:root {
10+
--primary-color: #10ABD1;
11+
--accent-color: #10ABD1;
12+
--text-color: #333333;
13+
--light-bg: #F5F5F5;
14+
--card-bg: white;
15+
--border-radius: 12px;
16+
}
17+
18+
body {
19+
font-family: 'Roboto', Arial, sans-serif;
20+
line-height: 1.6;
21+
color: var(--text-color);
22+
background-color: var(--light-bg);
23+
margin: 0;
24+
padding: 0;
25+
}
26+
27+
.container {
28+
max-width: 800px;
29+
margin: 0 auto;
30+
padding: 20px;
31+
}
32+
33+
header {
34+
background-color: var(--primary-color);
35+
color: white;
36+
padding: 20px;
37+
text-align: center;
38+
border-radius: var(--border-radius);
39+
margin-bottom: 20px;
40+
}
41+
42+
h1 {
43+
margin: 0;
44+
font-size: 2em;
45+
}
46+
47+
.app-logo {
48+
width: 80px;
49+
height: 80px;
50+
margin-bottom: 10px;
51+
border-radius: 50%;
52+
background-color: white;
53+
}
54+
55+
.card {
56+
background-color: var(--card-bg);
57+
border-radius: var(--border-radius);
58+
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
59+
padding: 20px;
60+
margin-bottom: 20px;
61+
}
62+
63+
h2 {
64+
color: var(--primary-color);
65+
border-bottom: 2px solid var(--primary-color);
66+
padding-bottom: 5px;
67+
}
68+
69+
h3 {
70+
color: var(--accent-color);
71+
}
72+
73+
.highlight {
74+
background-color: rgba(16, 171, 209, 0.1);
75+
padding: 10px;
76+
border-left: 4px solid var(--primary-color);
77+
margin: 15px 0;
78+
}
79+
80+
.last-updated {
81+
font-style: italic;
82+
text-align: right;
83+
margin-top: 30px;
84+
font-size: 0.9em;
85+
}
86+
87+
footer {
88+
text-align: center;
89+
padding: 20px;
90+
margin-top: 30px;
91+
font-size: 0.9em;
92+
color: #666;
93+
}
94+
95+
@media (max-width: 600px) {
96+
.container {
97+
padding: 10px;
98+
}
99+
100+
header {
101+
padding: 15px;
102+
}
103+
}
104+
</style>
105+
</head>
106+
<body>
107+
<div class="container">
108+
<header>
109+
<img alt="MoveTopia Logo" class="app-logo" src="/app_icon.png">
110+
<h1>MoveTopia Datenschutzerklärung</h1>
111+
</header>
112+
113+
<div class="card">
114+
<h2>Einleitung</h2>
115+
<p>Willkommen bei MoveTopia! Bei MoveTopia verpflichten wir uns, Ihre Privatsphäre zu
116+
schützen und eine transparente Erklärung darüber zu geben, wie wir mit Ihren
117+
Gesundheits- und Fitnessdaten umgehen.</p>
118+
119+
<p>Diese Datenschutzerklärung erläutert unsere Praktiken in Bezug auf Daten, die über die
120+
MoveTopia-Anwendung zugegriffen werden, insbesondere in Bezug auf die Health
121+
Connect-Integration.</p>
122+
123+
<div class="highlight">
124+
<p>MoveTopia wurde entwickelt, um Ihnen dabei zu helfen, Ihre Fitnessaktivitäten zu
125+
verfolgen und zu verbessern, während Ihre Privatsphäre respektiert wird, indem alle
126+
Ihre Daten lokal auf Ihrem Gerät bleiben.</p>
127+
</div>
128+
</div>
129+
130+
<div class="card">
131+
<h2>Datenerfassung und Nutzung</h2>
132+
133+
<h3>Gesundheits- und Fitnessdaten, auf die wir zugreifen</h3>
134+
<p>Über Health Connect kann MoveTopia auf folgende Arten von Gesundheits- und Fitnessdaten
135+
zugreifen:</p>
136+
<ul>
137+
<li><strong>Körperliche Aktivitätsdaten:</strong> Schritte, Distanz, verbrannte Kalorien
138+
und Trainingssitzungen
139+
</li>
140+
<li><strong>Schlafdaten:</strong> Schlafdauer und -qualität</li>
141+
<li><strong>Herzfrequenz:</strong> Ruhepuls und aktive Herzfrequenzmessungen</li>
142+
<li><strong>Andere Gesundheitsmetriken:</strong> Gewicht, Größe und andere grundlegende
143+
Gesundheitsmessungen
144+
</li>
145+
</ul>
146+
147+
<h3>Wie wir Ihre Daten verwenden</h3>
148+
<p>Wir verwenden die abgerufenen Gesundheits- und Fitnessdaten für folgende Zwecke:</p>
149+
<ul>
150+
<li>Um Ihre Fitnessstatistiken in der App anzuzeigen</li>
151+
<li>Um Ihren Fortschritt in Richtung Ihrer Fitnessziele zu verfolgen</li>
152+
<li>Um Einblicke in Ihre Aktivitätsmuster zu geben</li>
153+
</ul>
154+
155+
<div class="highlight">
156+
<p><strong>Wichtig:</strong> Die gesamte Datenverarbeitung erfolgt lokal auf Ihrem
157+
Gerät. Wir sammeln, speichern oder übertragen Ihre Gesundheitsdaten nicht an externe
158+
Server.</p>
159+
</div>
160+
</div>
161+
162+
<div class="card">
163+
<h2>Health Connect Integration</h2>
164+
165+
<p>MoveTopia integriert sich mit Health Connect, um ein umfassendes Fitnesserlebnis zu
166+
bieten. Wir bitten um Zugriff auf bestimmte Datentypen über Health Connect für folgende
167+
Zwecke:</p>
168+
169+
<h3>Körperliche Aktivitätsdaten</h3>
170+
<p>Zweck: Um Ihnen Statistiken über Ihre Workouts, Schritte und körperlichen Aktivitäten
171+
anzuzeigen, damit Sie Ihren Fortschritt verfolgen können.</p>
172+
173+
<h3>Schlafdaten</h3>
174+
<p>Zweck: Um Ihnen zu helfen, Ihre Schlafmuster und deren Beziehung zu Ihrer Fitnessleistung
175+
zu verstehen.</p>
176+
177+
<h3>Herzfrequenzdaten</h3>
178+
<p>Zweck: Um Einblicke in Ihre Herz-Kreislauf-Gesundheit während und nach Aktivitäten zu
179+
geben.</p>
180+
181+
<div class="highlight">
182+
<p>Sie behalten die volle Kontrolle darüber, welche Daten Sie mit MoveTopia teilen. Sie
183+
können den Zugriff auf jeden Datentyp jederzeit über die Health
184+
Connect-Einstellungen auf Ihrem Gerät gewähren oder widerrufen.</p>
185+
</div>
186+
187+
<p>Unsere Nutzung von Health Connect entspricht den von Google genehmigten Anwendungsfällen
188+
für Fitness- und Wellness-Anwendungen.</p>
189+
</div>
190+
191+
<div class="card">
192+
<h2>Datenspeicherung und Sicherheit</h2>
193+
194+
<p>MoveTopia wurde mit Privatsphäre als Priorität konzipiert:</p>
195+
196+
<ul>
197+
<li><strong>Nur lokale Speicherung:</strong> Alle Daten werden lokal auf Ihrem Gerät
198+
verarbeitet und gespeichert.
199+
</li>
200+
<li><strong>Keine externen Server:</strong> Wir übertragen oder speichern Ihre
201+
Gesundheitsdaten nicht auf externen Servern.
202+
</li>
203+
<li><strong>Health Connect Sicherheit:</strong> Wir verlassen uns auf das Health
204+
Connect-Framework von Android, das sichere Datenspeicherung und Zugriffskontrolle
205+
bietet.
206+
</li>
207+
</ul>
208+
</div>
209+
210+
<div class="card">
211+
<h2>Weitergabe Ihrer Informationen</h2>
212+
213+
<h3>Keine Weitergabe an Dritte</h3>
214+
<p>Wir geben Ihre Gesundheits- und Fitnessdaten nicht an Dritte weiter. Da alle Daten auf
215+
Ihrem Gerät verbleiben, können wir physisch nicht auf Ihre Informationen zugreifen oder
216+
sie teilen.</p>
217+
218+
<h3>Keine Datensammlung</h3>
219+
<p>Da wir Ihre Daten nicht auf unseren Servern sammeln oder speichern, können und werden wir
220+
Ihre Daten nicht für andere Zwecke als die unmittelbare Funktionalität der App auf Ihrem
221+
Gerät verwenden.</p>
222+
223+
<div class="highlight">
224+
<p>Wir verkaufen niemals Ihre persönlichen Informationen oder Gesundheitsdaten an
225+
Werbetreibende oder andere Dritte.</p>
226+
</div>
227+
</div>
228+
229+
<div class="card">
230+
<h2>Ihre Rechte und Kontrollen</h2>
231+
232+
<p>Sie haben vollständige Kontrolle über Ihre Gesundheits- und Fitnessdaten:</p>
233+
234+
<ul>
235+
<li><strong>Berechtigungsverwaltung:</strong> Sie können steuern, auf welche Datentypen
236+
MoveTopia über Health Connect zugreifen kann.
237+
</li>
238+
<li><strong>Datenentfernung:</strong> Sie können den Zugriff von MoveTopia über die
239+
Health Connect-Einstellungen widerrufen.
240+
</li>
241+
<li><strong>App-Löschung:</strong> Durch Deinstallieren der App werden alle
242+
app-spezifischen Daten von Ihrem Gerät entfernt.
243+
</li>
244+
</ul>
245+
246+
<h3>Wie Sie Berechtigungen verwalten</h3>
247+
<p>Sie können den Zugriff von MoveTopia auf Ihre Gesundheitsdaten jederzeit über die Health
248+
Connect-Einstellungen auf Ihrem Gerät oder über das Einstellungsmenü der App
249+
verwalten.</p>
250+
</div>
251+
252+
<div class="card">
253+
<h2>Datenschutz für Kinder</h2>
254+
<p>MoveTopia ist nicht für die Nutzung durch Kinder unter 13 Jahren vorgesehen. Wir sammeln
255+
oder greifen nicht wissentlich auf persönliche Informationen von Kindern unter diesem
256+
Alter zu.</p>
257+
</div>
258+
259+
<div class="card">
260+
<h2>Änderungen dieser Datenschutzerklärung</h2>
261+
<p>Wir können diese Datenschutzerklärung von Zeit zu Zeit aktualisieren. Wir werden Sie über
262+
Änderungen informieren, indem wir die neue Datenschutzerklärung auf dieser Seite
263+
veröffentlichen und das Datum der "Letzten Aktualisierung" aktualisieren.</p>
264+
265+
<p class="last-updated">Letzte Aktualisierung: 05. April 2025</p>
266+
</div>
267+
268+
<div class="card">
269+
<h2>Kontaktieren Sie uns</h2>
270+
<p>Wenn Sie Fragen oder Bedenken zu dieser Datenschutzerklärung oder unseren Datenpraktiken
271+
haben, kontaktieren Sie uns bitte unter:</p>
272+
<p>MoveTopia Team (Niklas Buse & Joshua Slaar)<br>
273+
E-Mail: mail@movetopia.de</p>
274+
</div>
275+
276+
<footer>
277+
© 2025 MoveTopia. Alle Rechte vorbehalten.
278+
</footer>
279+
</div>
280+
</body>
281+
</html>

0 commit comments

Comments
 (0)