diff --git a/CODEOWNERS b/CODEOWNERS index 30a03635aceb89aeef019cb376a3509a12c59b1c..471d0cf1ecf1732d1a2dbb8ed160fd94a9745e47 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -8,4 +8,4 @@ * @corona-warn-app/cwa-app-android-maintainers # Code Onwer of all german texts -/Corona-Warn-App/src/main/res/values-de/ @corona-warn-app/cwa-app-android-ua +/Corona-Warn-App/src/main/res/values-de/ @corona-warn-app/cwa-app-user-assistance diff --git a/Corona-Warn-App/src/main/assets/privacy_de.html b/Corona-Warn-App/src/main/assets/privacy_de.html index 138ff960889a9eac51814eecc6b1e9ca9646907b..554e2c1e1f3479d7d99881f4ac81881d58a66fb2 100644 --- a/Corona-Warn-App/src/main/assets/privacy_de.html +++ b/Corona-Warn-App/src/main/assets/privacy_de.html @@ -1,68 +1,42 @@ -<p> - Datenschutzerklärung -</p> <p> In dieser Datenschutzerklärung erfahren Sie, wie Ihre Daten verarbeitet werden und welche Datenschutzrechte Sie haben, wenn Sie die offizielle Corona-Warn-App der deutschen Bundesregierung nutzen. </p> + <p> Folgende Themen werden behandelt: </p> -<p> - <strong>1. Wer ist Herausgeber der Corona-Warn-App?</strong> -</p> -<p> - <strong>2. Ist die Nutzung der App freiwillig?</strong> -</p> -<p> - <strong>3. Auf welcher Rechtsgrundlage werden Ihre Daten verarbeitet?</strong> -</p> -<p> - <strong>4. An wen richtet sich die App?</strong> -</p> -<p> - <strong>5. Welche Daten werden verarbeitet?</strong> -</p> -<p> - <strong>6. Wofür werden Ihre Daten verarbeitet?</strong> -</p> -<p> - <strong>7. Wie funktioniert das länderübergreifende Warnsystem?</strong> -</p> -<p> - <strong>8. Welche Berechtigungen benötigt die App?</strong> -</p> -<p> - <strong>9. Wann werden Ihre Daten gelöscht?</strong> -</p> -<p> - <strong>10. An wen werden Ihre Daten weitergegeben?</strong> -</p> -<p> - <strong>11. Werden Ihre Daten in Länder außerhalb der EU übermittelt?</strong> -</p> -<p> - <strong>12. Wie können Sie Ihr Einverständnis zurücknehmen?</strong> -</p> -<p> - <strong>13. Welche weiteren Datenschutzrechte haben Sie?</strong> -</p> -<p> - <strong>14. Datenschutzbeauftragter und Kontakt</strong> -</p> +<ol> + <li><strong>Wer ist Herausgeber der Corona-Warn-App?</strong></li> + <li><strong>Ist die Nutzung der App freiwillig?</strong></li> + <li><strong>Auf welcher Rechtsgrundlage werden Ihre Daten verarbeitet?</strong></li> + <li><strong>An wen richtet sich die App?</strong></li> + <li><strong>Welche Daten werden verarbeitet?</strong></li> + <li><strong>Wofür werden Ihre Daten verarbeitet?</strong></li> + <li><strong>Wie funktioniert das länderübergreifende Warnsystem?</strong></li> + <li><strong>Welche Berechtigungen benötigt die App?</strong></li> + <li><strong>Wann werden Ihre Daten gelöscht?</strong></li> + <li><strong>An wen werden Ihre Daten weitergegeben?</strong></li> + <li><strong>Werden Ihre Daten in Länder außerhalb der EU übermittelt?</strong></li> + <li><strong>Wie können Sie Ihr Einverständnis zurücknehmen?</strong></li> + <li><strong>Welche weiteren Datenschutzrechte haben Sie?</strong></li> + <li><strong>Datenschutzbeauftragter und Kontakt</strong></li> +</ol> <p> Damit dieser Text für alle Nutzer verständlich ist, bemühen wir uns um eine einfache und möglichst untechnische Darstellung. + </p> -<h1> +<h2> 1. Wer ist Herausgeber der Corona-Warn-App? -</h1> +</h2> <p> Diese App wird vom Robert Koch-Institut (<strong>RKI</strong>) für die deutsche Bundesregierung herausgegeben. Das RKI ist auch dafür - verantwortlich, dass Ihre personenbezogenen Daten in Ãœbereinstimmung mit den Vorschriften - über den Datenschutz verarbeitet werden. + verantwortlich, dass Ihre personenbezogenen Daten in Ãœbereinstimmung mit den Vorschriften über + den Datenschutz verarbeitet werden. + </p> <p> Wenn Sie nach einem positiven Corona-Test per App eine länderübergreifende Warnung auslösen, @@ -71,40 +45,41 @@ jeweiligen länderübergreifenden Warnsystemen teilnehmenden Länder für die Datenverarbeitung gemeinsam verantwortlich. Einzelheiten erfahren Sie unter Punkt 7. </p> -<h1> +<h2> 2. Ist die Nutzung der App freiwillig? -</h1> +</h2> <p> Die Nutzung der App ist freiwillig. Es ist allein Ihre Entscheidung, ob Sie die App installieren, welche App-Funktionen Sie nutzen und ob Sie Daten mit anderen teilen. Alle - Haupt-Funktionen der App, die eine Weitergabe Ihrer personenbezogenen Daten an das RKI oder an - andere + App-Funktionen, die eine Weitergabe Ihrer personenbezogenen Daten an das RKI oder an andere Nutzer erfordern, holen vorher Ihr ausdrückliches Einverständnis ein. Falls Sie ein Einverständnis nicht erteilen oder nachträglich zurücknehmen, entstehen Ihnen keine Nachteile. + </p> -<h1> +<h2> 3. Auf welcher Rechtsgrundlage werden Ihre Daten verarbeitet? -</h1> +</h2> <p> Ihre Daten werden vom RKI grundsätzlich nur verarbeitet, wenn Sie zuvor Ihr ausdrückliches Einverständnis erteilt haben. Die Rechtsgrundlage ist Art. 6 Abs. 1 S. 1 lit. a DSGVO sowie im Falle von Gesundheitsdaten Art. 9 Abs. 2 lit. a DSGVO. Sie können ein einmal erteiltes Einverständnis jederzeit wieder zurücknehmen (sogenanntes Widerrufsrecht). Weitere Informationen zu Ihrem Widerrufsrecht finden Sie unter Punkt 12. Die Verarbeitung von Zugriffsdaten für die - Bereitstellung der täglichen Statistiken (siehe hierzu Punkt 6 f.) erfolgt im Rahmen der + Bereitstellung der täglichen Statistiken (siehe hierzu Punkt 6.e.) erfolgt im Rahmen der Information der Öffentlichkeit durch das RKI gem. § 4 Abs. 4 BGA-NachfG auf Basis von Art. 6 Abs. 1 lit e. DSGVO i.V.m § 3 BDSG. </p> -<h1> +<h2> 4. An wen richtet sich die App? -</h1> +</h2> <p> Die App richtet sich an Personen, die sich in Deutschland aufhalten und mindestens 16 Jahre alt sind. + </p> -<h1> +<h2> 5. Welche Daten werden verarbeitet? -</h1> +</h2> <p> Das gesamte System der App ist so programmiert, dass so wenig personenbezogene Daten wie möglich verarbeitet werden. Das bedeutet, dass das System bei der Risiko-Ermittlung, der Warnung anderer @@ -112,27 +87,30 @@ ermöglichen, auf Ihre Identität, Ihren Namen, Ihren Standort oder andere persönliche Details zu schließen. Eine Ausnahme gilt nur für die Funktion „Schnelltest-Ergebnis nachweisen“, mit der Sie eine auf Ihren Namen ausgestellte Bestätigung für negative Schnelltest-Ergebnisse anzeigen - lassen können (siehe hierzu Punkt 6 c.)sowie die Funktion zum Anlegen eines + lassen können (siehe hierzu Punkt 6 c.) sowie die Funktion zum Anlegen eines „Schnelltest-Profils“, mit der Sie einer Teststelle die zur Durchführung eines Schnelltests erforderlichen Daten bereitstellen können (siehe hierzu Punkt 6 d.). </p> + <p> Die App verzichtet standardmäßig auf die Auswertung Ihres Nutzungsverhaltens durch Analyse-Tools. Nur wenn Sie ausdrücklich der freiwilligen Datenspende zustimmen, werden - bestimmte Daten über Ihre Nutzung der App an das RKI übermittelt (siehe hierzu Punkt 5 h). + bestimmte Daten über Ihre Nutzung der App an das RKI übermittelt (siehe hierzu Punkt 5 h.). </p> <p> Die von der App verarbeiteten Daten lassen sich den folgenden Kategorien zuordnen: + </p> -<h2> +<h3> a. Zugriffsdaten -</h2> + +</h3> <p> Bei jedem Internet-Datenaustausch der App mit dem Serversystem des RKI (im Folgenden: <strong>Serversystem</strong>) werden vom Serversystem sogenannte Zugriffsdaten verarbeitet. Dies ist erforderlich, damit die App - aktuelle Daten (z. B. für Warnungen) abrufen oder bestimmte auf dem + aktuelle Daten (z. B. für Warnungen) abrufen oder bestimmte auf dem Smartphone gespeicherte Daten an das Serversystem übermitteln kann. Die Zugriffsdaten umfassen folgende Daten: </p> @@ -156,6 +134,7 @@ nicht als Nutzer der App persönlich identifiziert und es wird kein Nutzungsprofil erstellt. Eine Speicherung der IP-Adresse über das Ende des Nutzungsvorgangs hinaus erfolgt nicht. + </p> <p> Um eine unbefugte Zuordnung Ihrer Daten anhand Ihrer IP-Adresse schon @@ -164,10 +143,12 @@ leitet die von der App angeforderten oder übermittelten Daten dann ohne die IP-Adresse an den jeweils zuständigen Server weiter, so dass die IP-Adresse innerhalb des Serversystems nicht verarbeitet wird. + </p> -<h2> +<h3> b. Begegnungsdaten -</h2> + +</h3> <p> Sobald Sie das COVID-19-Benachrichtigungssystem Ihres iPhones (dort „Begegnungsmitteilungen“ genannt) oder Ihres Android-Smartphones (dort @@ -204,10 +185,11 @@ Smartphone nicht über diese Zufalls-IDs identifiziert werden kann. Die von Ihrem Smartphone ausgesendeten eigenen Begegnungsdaten und die aufgezeichneten Begegnungsdaten der Personen, mit denen Sie Kontakt hatten, - werden auf Ihrem Smartphone gespeichert und jeweils nach 14 Tagen gelöscht. + werden auf Ihrem Smartphone gespeichert und jeweils nach 14 Tage gelöscht. Auf die gleiche Weise werden Ihre ausgesendeten Begegnungsdaten verarbeitet, wenn sie von den Smartphones anderer App-Nutzer aufgezeichnet werden. + </p> <p> Bitte beachten Sie: Das COVID-19-Benachrichtigungssystem ist eine Funktion @@ -230,24 +212,24 @@ <li> Informationen von Apple für iPhones finden Sie auf Ihrem Gerät unter „Einstellungen“ > "Begegnungsmitteilungen“ unter dem Link „So - funktionieren Begegnungsmitteilungen …“. + funktionieren Begegnungsmitteilungen …“. </li> </ul> -<h2> +<h3> c. Schnelltestdaten -</h2> +</h3> <p> Sie können die Ergebnisse der von Ihnen bei einer Teststelle durchgeführten Antigen-Schnelltests über die App abrufen. Sollten Sie dieses Angebot wahrnehmen, wird Ihre Teststelle einen individuellen QR-Code für Sie erzeugen, den Sie mit der App scannen müssen. Der QR-Code enthält in kodierter Form eine eindeutige Kennzahl für Ihren Schnelltest sowie den Testzeitpunkt. Sofern Sie im Fall eines negativen Schnelltest-Befunds zu Nachweiszwecken eine namentliche Darstellung - des Testergebnisses in der App wünschen (siehe zu dieser Funktion Punkt 6.c.), enthält der + des Testergebnisses in der App wünschen (siehe zu dieser Funktion Punkt 6 c.), enthält der QR-Code in kodierter Form weitere von Ihnen angegebene Daten. </p> -<h2> +<h3> d. Schnelltest-Profil -</h2> +</h3> <p> Sie können Angaben zu Ihrer Person in Ihrem Schnelltest-Profil in der App speichern. Das Schnelltest-Profil umfasst folgende Felder: Vorname, Nachname, Geburtsdatum, Straße und @@ -258,9 +240,9 @@ im QR-Code enthalten. Sollte die Teststelle weitere Angaben benötigen, die nicht im QR-Code enthalten sind, können Sie diese der Teststelle auch auf andere Weise mitteilen. </p> -<h2> +<h3> e. Event-Daten -</h2> +</h3> <p> Wenn Sie ein Event (beispielsweise eine Feier oder ein Konzert) oder einen Ort (beispielsweise ein Geschäft oder ein Restaurant) besuchen, können Sie Ihren Aufenthalt in der App erfassen. @@ -286,7 +268,7 @@ </p> <p> Außerdem wird standardmäßig ein Eintrag in Ihrem Kontakt-Tagebuch angelegt. Die Einzelheiten - hierzu werden unter Punkt 5 g. und 6 g. erläutert. Wenn Sie für ein Event oder Ort keinen + hierzu werden unter Punkt 5.g. und 6.g. erläutert. Wenn Sie für ein Event oder Ort keinen Eintrag in Ihrem Kontakt-Tagebuch anlegen möchten, können Sie diese Funktion einfach über den entsprechenden Schieberegler ausschalten. </p> @@ -307,14 +289,14 @@ Event oder Ihren Ort einen QR-Code erstellen und ob Sie sich bei einem Event oder Ort einchecken. </p> -<h2> +<h3> f. Gesundheitsdaten -</h2> +</h3> <p> Gesundheitsdaten sind alle Daten, die Informationen zum Gesundheitszustand einer Person enthalten. Dazu gehören nicht nur Angaben zu früheren und - aktuellen Krankheiten, sondern auch zu Krankheitsrisiken einer Person (z. - B. das Risiko, dass eine Person sich mit dem Coronavirus angesteckt hat). + aktuellen Krankheiten, sondern auch zu Krankheitsrisiken einer Person (z. B. + das Risiko, dass eine Person sich mit dem Coronavirus angesteckt hat). Die App verarbeitet Gesundheitsdaten in folgenden Fällen: </p> <ul> @@ -334,10 +316,12 @@ </ul> <p> Die Einzelheiten werden unter Punkt 6 erläutert. + </p> -<h2> +<h3> g. Einträge im Kontakt-Tagebuch -</h2> + +</h3> <p> Wenn Sie im Kontakt-Tagebuch notieren, wann und wo Sie welche Personen getroffen haben und Umstände der Begegnung oder Kontaktdaten zu Personen und Orten vermerken, werden diese Angaben @@ -347,6 +331,7 @@ 14 Tage nachzuvollziehen. Falls Sie Corona-positiv getestet werden sollten und das Gesundheitsamt Ihre Mithilfe bei der Kontaktnachverfolgung erbittet, können Sie dem Gesundheitsamt somit schnell die benötigten Informationen mitteilen. + </p> <p> Die Nutzung des Kontakt-Tagebuchs ist freiwillig. Sie entscheiden selbst über die Speicherung @@ -356,15 +341,17 @@ Kommunikationskanäle weitergegeben werden. Das zuständige Gesundheitsamt wird Ihnen mitteilen, welche Informationen es für die Kontaktnachverfolgung von Ihnen benötigt und wie Sie diese zur Verfügung stellen können. + </p> -<h2> +<h3> h. Nutzungsdaten (Datenspende) -</h2> + +</h3> <p> Wenn Sie die Datenspende aktivieren, übermittelt die App bestimmte Daten über Ihre App-Nutzung einmal täglich an das RKI (im Folgenden: Nutzungsdaten). Diese Nutzungsdaten betreffen die von der App angezeigten Risiko-Begegnungen, erhaltene und ausgelöste Warnungen, abgerufene - Testergebnisse sowie technische Angaben über das Betriebssystem Ihres Smartphones. Im Einzelnen + Testergebnisse sowie technische Angaben über das Betriebssystem Ihres Smartphones.Im Einzelnen umfassen die Nutzungsdaten: </p> @@ -373,8 +360,7 @@ <li>Änderungen der Warnungshistorie im Vergleich zum Vortag.</li> <li>Welcher Risikostatus zum Zeitpunkt der Datenspende angezeigt wurde.</li> <li>Angaben dazu, auf welcher Grundlage welcher Begegnungen der Risikostatus in Zusammenhang mit - einer Begegnung - berechnet wurde. + einer Begegnung berechnet wurde. </li> <li>Angaben zum Modell und der Version Ihres Smartphones und zur Version Ihrer App sowie dem verwendeten Betriebssystem. @@ -387,10 +373,10 @@ <li>Ob es sich um ein positives oder negatives Testergebnis handelt.</li> <li>Welches Risiko zum Zeitpunkt der Testregistrierung angezeigt wurde.</li> <li>Wieviel Zeit seit der letzten Risiko-Begegnung und deren Anzeige in der App bis zur - Testregistrierung jeweils vergangen ist + Testregistrierung jeweils vergangen ist. </li> <li>Ob Sie die Funktion zum Auslösen einer Warnung gestartet haben und, falls ja, bis zu welchem - Schritt Sie dabei gekommen sind (z. B. bis zur Symptomabfrage). + Schritt Sie dabei gekommen sind (z. B. bis zur Symptomabfrage). </li> </ul> <p> @@ -413,6 +399,15 @@ </li> <li>Wie viele Stunden seit der Testregistrierung vergangen sind.</li> </ul> +<p> + Zusätzlich können Sie weitere optionale Angaben zu Ihrer Region sowie zu Ihrer Altersgruppe + machen, die zusammen mit den Nutzungsdaten an das RKI übermittelt werden. +</p> +<ul> + <li>Angaben zum Modell und der Version Ihres Smartphones und zur Version Ihrer App sowie dem + verwendeten Betriebssystem. + </li> +</ul> <p> Zusätzlich können Sie weitere freiwilligen Angaben zu Ihrer Region sowie zu Ihrer Altersgruppe machen, die zusammen mit den Nutzungsdaten an das RKI übermittelt werden. @@ -427,14 +422,14 @@ Bestätigung der Echtheit Ihrer App voraus (Beachten Sie bitte die weiteren Informationen hierzu unter Punkt 5 j. und Punkt 11). </p> -<h2> +<h3> i. Teilnahme an einer Befragung -</h2> +</h3> <p> Einigen Nutzern wird in der App die Teilnahme an einer Befragung des RKI angeboten. In der Regel wird das Angebot zur Teilnahme an der Befragung abhängig von bestimmten in der App registrierten - Ereignissen sein (z.B. der Anzeige eines erhöhten Risikos). Mit der Teilnahme an der Befragung - helfen Sie dem RKI, die Wirksamkeit der App zu bewerten, die App zu verbessern und + Ereignissen sein (z. B. der Anzeige eines erhöhten Risikos). Mit der Teilnahme an der + Befragung helfen Sie dem RKI, die Wirksamkeit der App zu bewerten, die App zu verbessern und beispielsweise zu verstehen, ob und wie Warnungen über die App dabei helfen, weitere Ansteckungen zu verhindern. </p> @@ -443,11 +438,12 @@ Befragung teilnehmen möchten und Daten hierfür an das RKI übermittelt werden sollen. Die Befragungen finden auf einer Webseite außerhalb der App statt, auf die Sie weitergeleitet werden. Die Teilnahme an einer Befragung setzt die Bestätigung der Echtheit Ihrer App voraus - (Beachten Sie bitte die weitere Informationen hierzu unter Punkt 5 j. und Punkt 11). + (Beachten Sie bitte die weitere Informationen hierzu unter Punkt 5 j. und Punkt 11). + </p> -<h2> +<h3> j. Bestätigung der Echtheit Ihrer App -</h2> +</h3> <p> Einige Funktionen der App setzen voraus, dass vorab die Echtheit Ihrer App geprüft und gegenüber dem RKI bestätigt wird. Die Echtheitsprüfung dient insbesondere dazu, festzustellen, ob Sie eine @@ -458,25 +454,27 @@ werden Daten an Apple übermittelt). Die Kennung enthält Informationen über die Version Ihres Smartphones und die Version der App. Möglicherweise kann der Anbieter Ihres Betriebssystems anhand der Kennung auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung - Ihres Smartphones stattgefunden hat. Weitere Angaben aus der App, z.B. Begegnungsdaten, erhält - der Anbieter Ihres Betriebssystems nicht. Die Anbieter des Betriebssystems nutzen die Kennung, - um die Echtheit Ihrer App gegenüber dem RKI zu bestätigen. Die Nutzung der Funktion zur + Ihres Smartphones stattgefunden hat. Weitere Angaben aus der App, z. B. Begegnungsdaten, + erhält der Anbieter Ihres Betriebssystems nicht. Die Anbieter des Betriebssystems nutzen die + Kennung, um die Echtheit Ihrer App gegenüber dem RKI zu bestätigen. Die Nutzung der Funktion zur Bestätigung der Echtheit ist freiwillig. Wenn Sie mit der Bestätigung der Echtheit Ihrer App nicht einverstanden sind, kann es jedoch sein, dass Ihnen andere Funktionen der App nicht zur Verfügung stehen. </p> -<h1> - 6. Wofür werden Ihre Daten verarbeitet? -</h1> <h2> - a. Risiko-Ermittlung + 6. Wofür werden Ihre Daten verarbeitet? </h2> +<h3> + a. Risiko-Ermittlung + +</h3> <p> Die Risiko-Ermittlung ist eine Hauptfunktion der App. Sie dient dazu, Sie bei möglichen Begegnungen mit Corona-positiv getesteten Personen (Risiko-Begegnungen) länderübergreifend zu warnen, Ihr persönliches Ansteckungsrisiko zu bewerten und Ihnen Verhaltens- und Gesundheitshinweise zu geben. + </p> <p> Hierzu ruft die App vom Serversystem mehrmals täglich eine aktuelle Positiv-Liste mit den @@ -485,10 +483,11 @@ eventuelle Angaben zum Symptombeginn. Falls die warnenden Nutzer bei einem Event eingecheckt waren, enthält die Positiv-Liste auch die betreffenden Event-IDs und die Dauer des Check-ins (Eincheck- und Auscheck-Zeit). + </p> <p> Die Zufalls-IDs und Event-IDs in den Positiv-Listen enthalten zusätzlich einen - Ãœbertragungsrisiko-Wert und eine Angabe zur Art der Diagnose (siehe hierzu Punkt 6 e.). + Ãœbertragungsrisiko-Wert und eine Angabe zur Art der Diagnose (siehe hierzu Punkt 6 e.). </p> <p> Die App gibt die Zufalls-IDs aus der Positiv-Liste an das COVID-19-Benachrichtigungssystem @@ -517,6 +516,7 @@ weder an das COVID-19-Benachrichtigungssystem noch an sonstige Empfänger (auch nicht an das RKI, andere Gesundheitsbehörden in Deutschland oder anderen Ländern, Apple, Google und sonstige Dritte) weitergegeben. + </p> <p> Sollte für Sie ein Ansteckungsrisiko ermittelt werden, wird dies in der App angezeigt. Sollte @@ -525,12 +525,16 @@ hatten oder dass Sie zeitgleich mit solchen Nutzern bei einem Event oder Ort eingecheckt waren. </p> <p> + Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalenderansicht des + Kontakt-Tagebuchs angezeigt. Bitte vermeiden Sie falsche Rückschlüsse auf die Quelle des + Risikos: Ein für einen Tag berechnetes und angezeigtes Risiko kann auf eine unbemerkte Begegnung + mit Ihnen unbekannten Nutzern zurückgehen und muss nicht im Zusammenhang mit den von Ihnen im + Kontakt-Tagebuch eingetragenen Personen, Orten oder Events stehen. </p> -Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalenderansicht des Kontakt-Tagebuchs angezeigt. Bitte vermeiden Sie falsche Rückschlüsse auf die Quelle des Risikos: Ein für einen Tag berechnetes und angezeigtes Risiko kann auf eine unbemerkte Begegnung mit Ihnen unbekannten Nutzern zurückgehen und muss nicht im Zusammenhang mit den von Ihnen im Kontakt-Tagebuch eingetragenen Personen, Orten oder Events stehen. -<p> -<h2> +<h3> b. Testergebnis abrufen -</h2> + +</h3> <p> Wenn Sie einen Corona-Test (PCR-Test oder Antigen-Schnelltest) gemacht haben, können Sie Ihr Testergebnis über die App abrufen. Die App benachrichtigt Sie, sobald Ihr Testergebnis vorliegt. @@ -540,6 +544,7 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende Testeinrichtungen, die nicht an das Serversystem der App angeschlossen sind, können nicht angezeigt werden. Wenn Sie keinen QR-Code erhalten haben, können Sie diese Funktion ebenfalls nicht nutzen. + </p> <p> <u>Scan des QR-Codes</u> @@ -559,9 +564,11 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende und behält nur das Token. Der QR-Code ist damit verbraucht (ungültig), das heißt er kann von niemanden mehr verwendet werden. So ist sichergestellt, dass Ihr QR-Code von keinem anderen Nutzer für die Abfrage des Testergebnisses verwendet werden kann. + </p> <p> <u>Hinterlegung des Testergebnisses</u> + </p> <p> Sobald Ihr Testergebnis vorliegt, wird es von der Testeinrichtung nur unter Angabe der gehashten @@ -569,34 +576,37 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende Testergebnis-Datenbank befindet sich auf einem speziellen Server innerhalb des Serversystems. Die Testeinrichtung erzeugt die gehashte Kennzahl auf Basis des gleichen QR-Codes, den auch Sie erhalten haben. + </p> <p> <u>Abruf des Testergebnisses</u> + </p> <p> - Die App fragt bei dem Serversystem unter Verwendung des in der App - gespeicherten Tokens regelmäßig den Status Ihres Tests ab. Das Serversystem - teilt der App dann den aktuellen Status (Ergebnis liegt noch nicht vor / - Ergebnis liegt vor) mit. Sobald Ihr Testergebnis vorliegt, wird auch der - Befund (Corona-positiv oder Corona-negativ) an die App übermittelt. Falls - Sie die Mitteilungen zum Teststatus aktiviert haben (unter „Einstellungen“ - > „Mitteilungen“), erhalten Sie eine Benachrichtigung. Das Testergebnis - wird erst angezeigt, wenn Sie die App öffnen. + Die App fragt bei dem Serversystem unter Verwendung des in der App gespeicherten Tokens + regelmäßig den Status Ihres Tests ab. Das Serversystem teilt der App + dann den aktuellen Status (Ergebnis liegt noch nicht vor / Ergebnis liegt vor) mit. + Sobald Ihr Testergebnis vorliegt, wird auch der Befund (Corona-positiv oder Corona-negativ) + an die App übermittelt. Falls Sie die Mitteilungen zum Teststatus aktiviert haben + (unter „Einstellungen“ > „Mitteilungen“), erhalten Sie eine Benachrichtigung. + Das Testergebnis wird erst angezeigt, wenn Sie die App öffnen. + </p> <p> Wenn Sie Corona-positiv getestet wurden, fordert die App bei dem Serversystem unter erneuter Verwendung des Tokens eine TAN - (Transaktionsnummer) an. Die TAN wird benötigt, um sicherzustellen, dass - keine Falschwarnungen an andere Nutzer ausgegeben werden. Das Serversystem - ordnet hierfür das Token wieder der gehashten Kennzahl zu und fordert von - der Testergebnis-Datenbank eine Bestätigung an, dass zu der gehashten - Kennzahl tatsächlich ein positives Testergebnis vorliegt. Sofern dies - bestätigt wird, erzeugt das Serversystem die TAN und übermittelt sie an die - App. Eine Kopie der TAN verbleibt auf dem Serversystem. + (Transaktionsnummer) an. Die TAN wird benötigt, um sicherzustellen, + dass keine Falschwarnungen an andere Nutzer ausgegeben werden. + Das Serversystem ordnet hierfür das Token wieder der gehashten Kennzahl + zu und fordert von der Testergebnis-Datenbank eine Bestätigung an, dass + zu der gehashten Kennzahl tatsächlich ein positives Testergebnis vorliegt. + Sofern dies bestätigt wird, erzeugt das Serversystem die TAN und übermittelt + sie an die App. Eine Kopie der TAN verbleibt auf dem Serversystem. + </p> -<h2> +<h3> c. Nachweis des Schnelltest-Ergebnisses -</h2> +</h3> <p> Wenn Sie das Ergebnis eines Antigen-Schnelltests abrufen und in der Testeinrichtung die Option zur namentlichen Anzeige für den Fall eines negativen Testergebnisses gewählt haben, wird ein @@ -628,11 +638,11 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende Schnelltestdaten (Kennzahl, Testzeitpunkt) werden gelöscht, sobald das positive Schnelltest-Ergebnis nicht mehr in der App angezeigt wird. </p> -<h2> +<h3> d. Schnelltest-Profil -</h2> +</h3> <p> - Das Schnelltest-Profil bietet Ihnen die Möglichkeit, die Datenerfassung in teilnehmenden + Das Schnelltest-Profil bietet Ihnen die Möglichkeit die Datenerfassung in teilnehmenden Teststellen zu beschleunigen. Sie können hierfür Angaben zu Ihrer Person in Ihrem Schnelltest-Profil in der App speichern und diese in Ihren persönlichen QR-Code umwandeln, der alle eingegebenen Daten enthält. In der Teststelle können Sie den QR-Code Ihres @@ -643,9 +653,11 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende die Teststelle benötigt und die nicht im QR-Code enthalten sind, können Sie der Teststelle auch auf andere Weise mitteilen. </p> -<h2> + +<h3> e. Andere warnen -</h2> + +</h3> <p> Wenn Sie Corona-positiv getestet sind und Ihre Zufalls-IDs mit der App teilen, können andere Nutzer denen Sie begegnet sind, gewarnt werden. Daneben werden Nutzer gewarnt, die zeitgleich @@ -677,17 +689,20 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende einer Risiko-Begegnung die Gefahr einer Ansteckung in der Regel je geringer ist, desto mehr Zeit seit Symptombeginn verstrichen ist. Diese zusätzlichen Ãœbertragungsrisiko-Werte ermöglichen eine genauere Bestimmung der Ansteckungswahrscheinlichkeit für andere Nutzer. + </p> <p> - Die in der App abgefragten Angaben zum Symptombeginn sind optional. Diese - Angaben können jedoch helfen, den Ãœbertragungsrisiko-Wert noch genauer zu - berechnen. Wenn Sie keine Angaben machen, werden die - Ãœbertragungsrisiko-Werte unter Annahme eines typischen Infektionsverlaufs - berechnet, das heißt je mehr Zeit seit Verwendung einer Zufalls-ID - vergangen ist, desto kleiner ist der zugehörige Ãœbertragungsrisiko-Wert. + Die in der App abgefragten Angaben zum Symptombeginn sind optional. Diese Angaben + können jedoch helfen, den Ãœbertragungsrisiko-Wert noch genauer zu berechnen. + Wenn Sie keine Angaben machen, werden die Ãœbertragungsrisiko-Werte unter + Annahme eines typischen Infektionsverlaufs berechnet, das heißt je mehr Zeit + seit Verwendung einer Zufalls-ID vergangen ist, desto kleiner ist der + zugehörige Ãœbertragungsrisiko-Wert. + </p> <p> <u>Wenn Sie Ihr Testergebnis nicht in der App abgerufen haben:</u> + </p> <p> Bei einem positiven Antigen-Schnelltest-Ergebnis können Sie Ihre Mitmenschen nur warnen, wenn @@ -719,21 +734,26 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende schließen können, dass Sie die Warnung abgegeben haben. Dies kann der Fall sein, wenn eine Person in Ihrem persönlichen Umfeld an dem Tag, an dem die Risiko-Begegnung angezeigt wird, außer mit Ihnen keine anderen Kontakte hatte. + </p> -<h2> +<h3> f. Informatorische Nutzung der App -</h2> + +</h3> <p> Die täglichen Statistiken, die in der App erscheinen, erhält die App - automatisch über das Serversystem. Dabei fallen Zugriffsdaten an. In der - App verlinkte Webseiten, z. B.: <u>www.bundesregierung.de</u>, werden im - Standard-Browser (Android-Smartphones) oder in der App (iPhones) geöffnet - und angezeigt. Welche Daten dabei verarbeitet werden, wird von den - jeweiligen Anbietern der aufgerufenen Webseite festgelegt. + automatisch über das Serversystem. Dabei fallen Zugriffsdaten an. In der App verlinkte + Webseiten, z. B.: + <a href="https://www.bundesregierung.de/">www.bundesregierung.de</a>, werden im Standard-Browser + (Android-Smartphones) oder in der App (iPhones) geöffnet und angezeigt. + Welche Daten dabei verarbeitet werden, wird von den jeweiligen Anbietern + der aufgerufenen Webseite festgelegt. + </p> -<h2> +<h3> g. Kontakt-Tagebuch -</h2> + +</h3> <p> Das Kontakt-Tagebuch ist eine Zusatzfunktion der App. Ihre Einträge im Kontakt-Tagebuch dienen Ihnen als Gedächtnisstütze und sind nur Ihnen zugänglich. Falls Sie zu einem späteren Zeitpunkt @@ -745,12 +765,14 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende festgestellt wurde. Dadurch können auch Ihre Kontaktpersonen ihr eigenes Kontaktverhalten ggf. anpassen und so weitere Ansteckungen in ihrem Umfeld durch eventuell noch unerkannte Ansteckungen verhindern. + </p> -<h2> +<h3> h. Datenspende -</h2> + +</h3> <p> - Die Datenspende ist eine Zusatzfunktionen der App. Die im Rahmen der Datenspende an das RKI + Die Datenspende ist eine Zusatzfunktion der App. Die im Rahmen der Datenspende an das RKI übermittelten Nutzungsdaten und weiteren freiwilligen Angaben dienen der Bewertung der Wirksamkeit der App und sie werden ausgewertet, um folgende Verbesserungen zu ermöglichen: </p> @@ -770,11 +792,11 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende </li> <li> Informationen und Hilfestellungen zur App ermöglichen – Es soll möglich werden, zu erkennen, - ob es z.B. bei der Nutzung der App im Zusammenhang mit bestimmten Testeinrichtungen und - Laboren oder in bestimmten Regionen zu Problemen kommt. Dies kann festgestellt werden, wenn - aufgrund der Datenspende auffällt, dass in bestimmten Regionen Testergebnisse verspätet zur - Verfügung stehen. So können die zuständigen Gesundheitsbehörden auch gezielt auf mögliche - technische Störungen hingewiesen werden. + ob es z. B. bei der Nutzung der App im Zusammenhang mit bestimmten Testeinrichtungen + und Laboren oder in bestimmten Regionen zu Problemen kommt. Dies kann festgestellt werden, + wenn aufgrund der Datenspende auffällt, dass in bestimmten Regionen Testergebnisse verspätet + zur Verfügung stehen. So können die zuständigen Gesundheitsbehörden auch gezielt auf + mögliche technische Störungen hingewiesen werden. </li> <li> Verbesserung der Statistiken über den Pandemieverlauf – Die Daten können Aufschluss über die @@ -787,18 +809,18 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende Namen oder Ihrer Identität gespeichert und ausgewertet. Das RKI erfährt also nicht, wer Sie sind oder wen Sie getroffen haben. </p> -<h2> +<h3> i. Befragungen -</h2> +</h3> <p> Befragungen finden auf einer Webseite außerhalb der App statt, auf die Sie weitergeleitet werden. In Zusammenhang mit Befragungen werden durch die App keine Daten an das RKI übermittelt. Welche Zwecke mit einer Befragung durch das RKI verfolgt werden, ist in den Informationen zur Befragung auf der Befragungs-Webseite beschrieben. </p> -<h2> +<h3> j. Bestätigung der Echtheit Ihrer App -</h2> +</h3> <p> Zur Bestätigung der Echtheit Ihrer App wird eine Funktion des Betriebssystems Ihres Smartphones genutzt. Damit kann sichergestellt werden, dass nur Nutzer der App an der Datenspende oder an @@ -811,9 +833,10 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende schließen kann. Weiteren Angaben über Ihre Nutzung der Corona-Warn-App erhält der Anbieter Ihres Betriebssystems jedoch nicht. </p> -<h1> +<h2> + 7. Wie funktioniert das länderübergreifende Warnsystem? -</h1> +</h2> <p> Damit auch Nutzer von den offiziellen Corona-Apps anderer Länder gewarnt werden, hat das RKI zusammen mit mehreren in anderen Ländern für @@ -858,8 +881,8 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende innerhalb der EU betriebenen Austausch-Server werden in einem Beschluss der EU-Kommission festgelegt (Durchführungsbeschluss (EU) 2020/1023 vom 15. Juli 2020, abrufbar unter <a href="https://eur-lex.europa.eu/eli/dec_impl/2020/1023/oj"> - https://eur-lex.europa.eu/eli/dec_impl/2020/1023/oj</a>. - Für die Verarbeitung der in den Positiv-Listen enthaltenen Angaben (Zufalls-IDs und + https://eur-lex.europa.eu/eli/dec_impl/2020/1023/oj + </a>. Für die Verarbeitung der in den Positiv-Listen enthaltenen Angaben (Zufalls-IDs und eventuelle Angaben zum Symptombeginn) auf den Austausch-Servern zur Ermöglichung der länderübergreifenden Risiko-Ermittlung und Warnung ist das RKI danach mit den jeweils zuständigen Gesundheitsbehörden der teilnehmenden Länder gemeinsam verantwortlich. @@ -879,12 +902,19 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende <p> Bitte beachten Sie, dass sich die Liste der teilnehmenden Länder ändern kann. Die aktuelle Liste mit Angaben zu den jeweils verantwortlichen - Gesundheitsbehörden finden Sie in den FAQ: abrufbar unter <a - href="https://www.coronawarn.app/de/faq/#interoperability_countries">https://www.coronawarn.app/de/faq/#interoperability_countries</a>. + Gesundheitsbehörden finden Sie in den FAQ: abrufbar unter + <a + href="https://www.coronawarn.app/de/faq/#interoperability_countries" + title="Follow link" + > + https://www.coronawarn.app/de/faq/#interoperability_countries + </a> + . + </p> -<h1> +<h2> 8. Welche Berechtigungen benötigt die App? -</h1> +</h2> <p> Die App benötigt Zugriff auf verschiedene Funktionen und Schnittstellen Ihres Smartphones. Dazu ist es erforderlich, dass Sie der App bestimmte @@ -895,10 +925,12 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende zustimmen können. Bitte beachten Sie, dass ohne die von der App angeforderten Berechtigungen keine oder nur wenige App-Funktionen genutzt werden können. + </p> -<h2> +<h3> a. Technische Voraussetzungen (alle Smartphones) -</h2> + +</h3> <ul> <li> Die App benötigt eine Internetverbindung, um mit dem Serversystem Daten @@ -916,9 +948,10 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende müssen Sie alle Aktionen in der App selbst starten. </li> </ul> -<h2> +<h3> b. Android-Smartphones -</h2> + +</h3> <p> Wenn Sie ein Android-Smartphone verwenden, müssen außerdem folgende Systemfunktionen aktiviert sein: @@ -949,9 +982,10 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende um QR-Codes scannen zu können. </li> </ul> -<h2> +<h3> c. iPhones (Apple iOS) -</h2> + +</h3> <p> Wenn Sie ein iPhone verwenden, müssen folgende Systemfunktionen aktiviert sein: @@ -974,61 +1008,69 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende um QR-Codes scannen zu können. </li> </ul> -<h1> + +<h2> 9. Wann werden Ihre Daten gelöscht? -</h1> +</h2> <p> Die Speicherdauer richtet sich danach, für welche Zwecke bzw. App-Funktionen Ihre Daten jeweils gespeichert worden sind. Bei der Festlegung der Speicherdauer berücksichtigt das RKI die aktuellen - wissenschaftlichen Erkenntnisse zur Inkubationszeit (Dauer von der - Ansteckung bis zum Ausbruch der Krankheit), die bis zu 14 Tage beträgt und + wissenschaftlichen Erkenntnisse zur Inkubationszeit (Dauer von der Ansteckung + bis zum Ausbruch der Krankheit), die bis zu 14 Tage beträgt und zur Dauer des Ansteckungsrisikos für Mitmenschen einer infizierten Person nach dem Ende der Inkubationszeit. Soweit unter Punkt 6 keine kürzere Speicherdauer genannt wird, gelten folgende Fristen: </p> -<h2> + +<h3> a. Daten auf Ihrem Smartphone -</h2> -<p> - Die Positiv-Listen werden nach 14 Tagen aus dem App-Speicher gelöscht. Das - für Sie ermittelte Ansteckungsrisiko (z. B. „niedriges Risiko“) wird nach - jeder Aktualisierung, spätestens aber nach 14 Tagen aus dem App-Speicher - gelöscht. Sofern Sie ein positives Testergebnis abgerufen haben, wird das - Token im App-Speicher gelöscht, sobald Sie eine Warnung auslösen. Die Einträge im - Kontakt-Tagebuch bleiben für 16 Tage auf Ihrem Smartphone gespeichert und werden dann - automatisch gelöscht. Sie können diese Einträge jederzeit auch vorzeitig selbst löschen. Bitte - beachten Sie, dass beim Einchecken zu einem Event oder an einem Ort übernommene Einträge im - Kontakt-Tagebuch auch nach der Löschung des zugehörigen Check-Ins dort noch gespeichert sind. - Wenn Sie Ihr Schnelltest-Profil einmal angelegt haben, bleibt dieses so lange in der App - gespeichert, bis Sie es selbst wieder löschen. + +</h3> +<p> + Die Positiv-Listen werden nach 14 Tagen aus dem App-Speicher gelöscht. Event-Daten im Bereich + „Meine Check-Ins“ werden nach 14 Tagen automatisch gelöscht. Alternativ können Sie Einträge im + Bereich „Meine Check-Ins“ jederzeit händisch löschen. Das für Sie ermittelte Ansteckungsrisiko + (z. B. „niedriges Risiko“) wird nach jeder Aktualisierung, spätestens aber nach 14 Tagen aus dem + App-Speicher gelöscht. Sofern Sie ein positives Testergebnis abgerufen haben, wird das Token im + App-Speicher gelöscht, sobald Sie eine Warnung auslösen. Die Einträge im Kontakt-Tagebuch + bleiben für 16 Tage auf Ihrem Smartphone gespeichert und werden dann automatisch gelöscht. Sie + können diese Einträge jederzeit auch vorzeitig selbst löschen. Bitte beachten Sie, dass beim + Einchecken zu einem Event oder an einem Ort übernommene Einträge im Kontakt-Tagebuch auch nach + der Löschung des zugehörigen Check-Ins dort noch gespeichert sind. Wenn Sie Ihr + Schnelltest-Profil einmal angelegt haben, bleibt dieses so lange in der App gespeichert, bis Sie + es selbst wieder löschen. </p> -<h2> + +<h3> b. Daten auf Serversystemen -</h2> + +</h3> <p> Positiv-Listen werden nach 14 Tagen von allen Serversystemen (einschließlich dem Austausch-Server) gelöscht. Alle anderen Daten, mit Ausnahme der im Rahmen der Datenspende sowie zur Bestätigung der Echtheit Ihrer App übermittelten Daten, werden spätestens nach 21 Tagen gelöscht. </p> -<h2> + +<h3> c. Datenspende -</h2> + +</h3> <p> Nutzungsdaten und weitere freiwillige Angaben, die im Rahmen der Datenspende an das RKI übermittelt werden, werden nach 180 Tagen gelöscht. </p> -<h2> +<h3> d. Bestätigung der Echtheit Ihrer App -</h2> +</h3> <p> Die Kennungen, die Ihr Smartphone zur Bestätigung der Echtheit Ihrer App erzeugt, werden nach 30 Tagen nach Ãœbermittlung an das RKI vom Serversystemen gelöscht. </p> -<h1> +<h2> 10. An wen werden Ihre Daten weitergegeben? -</h1> +</h2> <p> Wenn Sie andere Nutzer aufgrund eines positiven PCR-Tests über die App warnen, werden Ihr Testergebnis (in Form Ihrer Zufalls-IDs der letzten 14 Tage) sowie optionale Angaben zum @@ -1048,24 +1090,22 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende Schweizerischen Eidgenossenschaft in Abstimmung mit dem RKI betrieben und gewartet. </p> <p> - Mit dem Betrieb und der Wartung des gemeinsam betriebenen Austausch-Servers der teilnehmenden - EU-Länder haben die jeweils zuständigen nationalen Gesundheitsbehörden die EU-Kommission als - Auftragsverarbeiter beauftragt. Der Austausch-Server für länderübergreifende Warnungen zwischen - der Corona-Warn-App und der schweizerischen Corona-App wird vom Bundesamt für Gesundheit der - Schweizerischen Eidgenossenschaft in Abstimmung mit dem RKI betrieben und gewartet. Mit dem - Betrieb und der Wartung eines Teils der technischen Infrastruktur der App (z. B. Serversysteme, - Hotline) hat das RKI die T-Systems International GmbH und die SAP Deutschland SE & Co. KG - beauftragt, die als Auftragsverarbeiter des RKI tätig werden. Diese Unternehmen sind von der - EU-Kommission zudem als Unterauftragsverarbeiter mit der technischen Bereitstellung und - Verwaltung des gemeinsam betriebenen Warnsystems der teilnehmenden Länder beauftragt. Im Ãœbrigen - gibt das RKI Ihre Daten, die im Zusammenhang mit der Nutzung der App erhoben werden, nur an - Dritte weiter, soweit das RKI rechtlich dazu verpflichtet ist oder die Weitergabe im Falle von - Angriffen auf die technische Infrastruktur der App zur Rechts- oder Strafverfolgung erforderlich - ist. Eine Weitergabe durch das RKI in anderen Fällen erfolgt grundsätzlich nicht. -</p> -<h1> + Mit dem Betrieb und der Wartung eines Teils der technischen Infrastruktur + der App (z. B. Serversysteme, Hotline) hat das RKI die T-Systems + International GmbH und die SAP Deutschland SE & Co. KG beauftragt, die + als Auftragsverarbeiter des RKI tätig werden. Diese Unternehmen sind von + der EU-Kommission zudem als Unterauftragsverarbeiter mit der technischen + Bereitstellung und Verwaltung des gemeinsam betriebenen Warnsystems der + teilnehmenden Länder beauftragt. Im Ãœbrigen gibt das RKI Ihre Daten, die im Zusammenhang mit der + Nutzung der + App erhoben werden, nur an Dritte weiter, soweit das RKI rechtlich dazu + verpflichtet ist oder die Weitergabe im Falle von Angriffen auf die + technische Infrastruktur der App zur Rechts- oder Strafverfolgung + erforderlich ist. Eine Weitergabe durch das RKI in anderen Fällen erfolgt grundsätzlich nicht. +</p> +<h2> 11. Werden Ihre Daten in Länder außerhalb der EU übermittelt? -</h1> +</h2> <p> Wenn Sie eine Warnung aufgrund eines positiven PCR-Tests auslösen, werden Ihre Zufalls-IDs auch in die Schweiz zu dem vom RKI gemeinsam mit dem Bundesamt für Gesundheit der Schweizerischen @@ -1093,44 +1133,41 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende oder in einem anderen Land in der EU (oder dem Europäischen Wirtschaftsraum) verarbeitet, die somit den strengen Anforderungen der Datenschutz-Grundverordnung (DSGVO) unterliegen. </p> -<h1> +<h2> 12. Wie können Sie Ihr Einverständnis zurücknehmen? -</h1> +</h2> <p> Ihnen steht das Recht zu, ein in der App erteiltes Einverständnis gegenüber - dem RKI jederzeit mit Wirkung für die Zukunft zurückzunehmen. Sofern die - jeweilige Verarbeitung Ihrer Daten bereits durchgeführt worden ist, kann - die Verarbeitung jedoch nicht mehr rückgängig gemacht werden. Insbesondere - hat das RKI keine Möglichkeit, Ihre bereits an andere Nutzer übermittelten - Zufalls-IDs von deren Smartphones zu löschen. + dem RKI jederzeit mit Wirkung für die Zukunft zurückzunehmen. Sofern die jeweilige + Verarbeitung Ihrer Daten bereits durchgeführt worden ist, kann die Verarbeitung + jedoch nicht mehr rückgängig gemacht werden. Insbesondere hat das RKI keine Möglichkeit, + Ihre bereits an andere Nutzer übermittelten Zufalls-IDs von deren Smartphones zu löschen. </p> -<h2> +<h3> a. Einverständnis „Risiko-Ermittlung“ -</h2> +</h3> <p> - Ihr Einverständnis in die Risiko-Ermittlung können Sie jederzeit - zurücknehmen, indem Sie diese Funktion in den Einstellungen der App - deaktivieren oder die App löschen. Wenn Sie die Risiko-Ermittlung wieder - nutzen möchten, können Sie die Funktion erneut aktivieren oder die App - erneut installieren. + Ihr Einverständnis in die Risiko-Ermittlung können Sie jederzeit zurücknehmen, + indem Sie diese Funktion in den Einstellungen der App deaktivieren oder + die App löschen. Wenn Sie die Risiko-Ermittlung wieder nutzen möchten, + können Sie die Funktion erneut aktivieren oder die App erneut installieren. </p> -<h2> +<h3> b. Einverständnis „Testergebnis abrufen“ -</h2> -<p> - Ihr Einverständnis zum Abruf des Testergebnisses durch die App können Sie - zurücknehmen, indem Sie den Test in der App anzeigen und anschließend - entfernen. Das Token zum Abruf des Testergebnisses wird dadurch aus dem - App-Speicher gelöscht, sodass das Token auf dem Serversystem nicht mehr - zugeordnet werden kann. Eine erneute Zuordnung des gleichen Tests zu Ihrer - App bzw. der erneute Scan desselben QR-Codes ist nicht möglich. Wenn Sie - erneut getestet wurden und das Testergebnis abrufen möchten, werden Sie - erneut um Ihr Einverständnis gebeten. Liegt das Testergebnis bereits in der - App vor, kann das Einverständnis nicht mehr zurückgenommen werden. -</p> -<h2> +</h3> +<p> + Ihr Einverständnis zum Abruf des Testergebnisses durch die App können Sie zurücknehmen, + indem Sie den Test in der App anzeigen und anschließend entfernen. Das Token zum Abruf + des Testergebnisses wird dadurch aus dem App-Speicher gelöscht, sodass das Token auf + dem Serversystem nicht mehr zugeordnet werden kann. Eine erneute Zuordnung des gleichen + Tests zu Ihrer App bzw. der erneute Scan desselben QR-Codes ist nicht möglich. Wenn Sie + erneut getestet wurden und das Testergebnis abrufen möchten, werden Sie erneut um Ihr + Einverständnis gebeten. Liegt das Testergebnis bereits in der App vor, kann das + Einverständnis nicht mehr zurückgenommen werden. +</p> +<h3> c. Einverständnis „Andere warnen“ -</h2> +</h3> <p> Ihr Einverständnis zur Ãœbermittlung Ihres Testergebnisses (genauer gesagt: Ihrer Zufalls-IDs und Event-IDs sowie der erfassten Eincheck- und Auscheck-Zeiten der letzten 14 Tage) zur Warnung @@ -1162,17 +1199,17 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende Smartphones möglicherweise eine manuelle Löschung vornehmen. Beachten Sie hierzu auch die Hinweise unter Punkt 5 b. </p> -<h2> +<h3> d. Einverständnis „Event-Check-in“ -</h2> +</h3> <p> Sie können unter „Meine Check-ins“ Einträge zu Events oder Orten jederzeit löschen. So verhindern Sie, dass Daten zu diesen Events im Rahmen der Funktion „Andere warnen“ verwendet werden und Event-IDs Ihrer Person oder Ihrem Smartphone zugeordnet werden können. </p> -<h2> +<h3> e. Einverständnis „Datenspende“ -</h2> +</h3> <p> Sie können Ihr Einverständnis in die Datenspende jederzeit zurücknehmen, indem Sie „Daten spenden“ in den Einstellungen der App deaktivieren. Die App wird dann Ihre Nutzungsdaten und @@ -1180,17 +1217,17 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende Datenspende wieder erlauben möchten, können Sie die Funktion in den Einstellungen erneut aktivieren. </p> -<h2> +<h3> f. Einverständnis „Befragung“ -</h2> +</h3> <p> Ihr Einverständnis zur Teilnahme an einer Befragung des RKI erteilen Sie nicht in der App, sondern über die Website, auf der auch die Befragung durchgeführt wird. Dort ist auch beschrieben, wie Sie Ihr Einverständnis zurücknehmen können. </p> -<h2> +<h3> g. Einverständnis „Bestätigung der Echtheit Ihrer App“ -</h2> +</h3> <p> Wenn Sie Ihr Einverständnis zur Bestätigung der Echtheit Ihrer App zurücknehmen, hat dies keine direkte Auswirkung auf die damit zusammenhängende Datenverarbeitung. Die Ãœbermittlung der von @@ -1198,9 +1235,9 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende Bestätigung der Echtheit Ihrer App findet unmittelbar statt, nachdem Sie Ihr Einverständnis erteilt haben. </p> -<h1> +<h2> 13. Welche weiteren Datenschutzrechte haben Sie? -</h1> +</h2> <p> Soweit das RKI personenbezogene Daten von Ihnen verarbeitet, stehen Ihnen außerdem folgende Datenschutzrechte zu: @@ -1211,19 +1248,21 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende </li> <li> das Recht, den behördlichen - <a href="https://www.rki.de/DE/Content/Institut/OrgEinheiten/Datenschutz/Datenschutz_node.html"> + <a + href="https://www.rki.de/DE/Content/Institut/OrgEinheiten/Datenschutz/Datenschutz_node.html" + > Datenschutzbeauftragten des RKI </a> zu kontaktieren und Ihr Anliegen vorzubringen (Art. 38 Abs. 4 DSGVO) und </li> <li> - das Recht, sich bei einer Aufsichtsbehörde für den Datenschutz zu - beschweren. Dazu können Sie sich entweder an die zuständige - Aufsichtsbehörde an Ihrem Wohnort oder an die für des RKI zuständige - Behörde wenden. Die zuständige Aufsichtsbehörde für das RKI ist der - Bundesbeauftragte für den Datenschutz und die Informationsfreiheit, - Graurheindorfer Str. 153, 53117 Bonn. + das Recht, sich bei einer Aufsichtsbehörde für den + Datenschutz zu beschweren. Dazu können Sie sich entweder an die + zuständige Aufsichtsbehörde an Ihrem Wohnort oder an die für des RKI + zuständige Behörde wenden. Die zuständige Aufsichtsbehörde für das RKI + ist der Bundesbeauftragte für den Datenschutz und die + Informationsfreiheit, Graurheindorfer Str. 153, 53117 Bonn. </li> </ul> <p> @@ -1246,15 +1285,15 @@ Das für die letzten 14 Tage jeweils berechnete Risiko wird Ihnen in der Kalende Ihnen bereitgestellten Informationen zu Ihrer Identität in der Regel nicht erfüllt werden können. </p> -<h1> +<h2> 14. Datenschutzbeauftragter und Kontakt -</h1> +</h2> <p> Fragen und Anliegen zum Datenschutz können Sie an den behördlichen - Datenschutzbeauftragten des RKI senden: Robert Koch-Institut, z. H. des + Datenschutzbeauftragten des RKI senden: Robert Koch-Institut, z. H. des Datenschutzbeauftragten, Nordufer 20, 13353 Berlin oder per E-Mail an: - datenschutz@rki.de. + <a href="mailto:datenschutz@rki.de">datenschutz@rki.de</a>. </p> <p> - Stand: 30.04.2021 -</p> + Stand: 12.05.2021 +</p> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/assets/privacy_en.html b/Corona-Warn-App/src/main/assets/privacy_en.html index 0e548ea78d3c38ccc440408ebb5a7233973658ae..eb20192d522c7931cd2a8d17fc287e8016d335f3 100644 --- a/Corona-Warn-App/src/main/assets/privacy_en.html +++ b/Corona-Warn-App/src/main/assets/privacy_en.html @@ -1,6 +1,3 @@ -<p> - Privacy notice -</p> <p> This privacy notice explains how your data is processed and what data protection rights you have when using the German Federal Government’s @@ -9,59 +6,36 @@ <p> It covers the following topics: </p> -<p> - 1. Who is the Corona-Warn-App published by? -</p> -<p> - 2. Is using the app voluntary? -</p> -<p> - 3. On what legal basis is your data processed? -</p> -<p> - 4. Who is the app aimed at? -</p> -<p> - 5. What data is processed? -</p> -<p> - 6. Why is your data processed? -</p> -<p> - 7. How does the transnational warning system work? -</p> -<p> - 8. What permissions does the app require? -</p> -<p> - 9. When will your data be deleted? -</p> -<p> - 10. Who will receive your data? -</p> -<p> - 11. Is your data transferred to countries outside the EU? -</p> -<p> - 12. How can you withdraw your consent? -</p> -<p> - 13. What other rights do you have under data protection law? -</p> -<p> - 14. Data protection officer and contact -</p> +<ol> + <li><strong>Who is the Corona-Warn-App published by?</strong></li> + <li><strong>Is using the app voluntary?</strong></li> + <li><strong>On what legal basis is your data processed?</strong></li> + <li><strong>Who is the app aimed at?</strong></li> + <li><strong>What data is processed?</strong></li> + <li><strong>Why is your data processed?</strong></li> + <li><strong>How does the transnational warning system work?</strong></li> + <li><strong>What permissions does the app require?</strong></li> + <li><strong>When will your data be deleted?</strong></li> + <li><strong>Who will receive your data?</strong></li> + <li><strong>Is your data transferred to countries outside the EU?</strong></li> + <li><strong>How can you withdraw your consent?</strong></li> + <li><strong>What other rights do you have under data protection law?</strong></li> + <li><strong>Data protection officer and contact</strong></li> +</ol> <p> To make sure that this text can be understood by all users, we have made every effort to make it simple and as non-technical as possible. + </p> -<h1> +<h2> 1. Who is the Corona-Warn-App published by? -</h1> + +</h2> <p> This app is published by the Robert Koch Institute (<strong>RKI</strong>) for the German Federal Government. The RKI is also responsible for ensuring that your personal data is processed in accordance with data protection regulations. + </p> <p> If, after testing positive for coronavirus, you use the app’s transnational warning feature, it @@ -70,61 +44,71 @@ participating in the respective transnational warning systems are so-called joint controllers, meaning they are jointly responsible for data processing. Please refer to Section 7 for more details. + </p> -<h1> +<h2> 2. Is using the app voluntary? -</h1> + +</h2> <p> Using the app is voluntary. It is entirely up to you whether you install the app, which of the - app’s features you use, and whether you share data with others. All of the app’s main features - that + app’s features you use, and whether you share data with others. All of the app’s features that require the transfer of your personal data to the RKI or to other users will obtain your express consent in advance. If you do not give your consent or if you subsequently withdraw it, this will not result in any disadvantages for you. + </p> -<h1> +<h2> 3. On what legal basis is your data processed? -</h1> + +</h2> <p> The RKI will only process your data if you have given your express consent beforehand. The legal basis is Art. 6(1) Sentence 1(a) GDPR and, in the case of health data, Art. 9(2)(a) GDPR. After giving your consent, you can withdraw it at any time (so-called right of withdrawal). Please refer to Section 12 for further information about your right of withdrawal. On the basis of Art. 6(1) Sentence 1(e) GDPR in conjunction with Sect. 3 of the German Federal Data Protection Act - (BDSG), the processing of access data for the provision of daily statistics (see Section 6 f.) + (BDSG), the processing of access data for the provision of daily statistics (see Section 6 e.) is performed as part of the RKI’s duty to inform the public pursuant to Sect. 4(4) of the Act on Successor Agencies to the Federal Health Agency (BGA-NachfG). </p> -<h1> +<h2> 4. Who is the app aimed at? -</h1> + +</h2> <p> The app is aimed at people who are resident in Germany and at least 16 years old. + </p> -<h1>5. What data is processed? -</h1> +<h2> + 5. What data is processed? + +</h2> <p> The app’s entire system has been programmed to process as little personal data as possible. This means that, when you use exposure logging, warn other users, or retrieve a test result, the system does not need to collect any data that would allow the RKI or other users to infer your - identity, your name, your location or other personal details. - The only exceptions to this are the feature for proving a rapid test result, which allows you to - display a confirmation issued in your name for negative rapid test results (see Section 6 c.), - and the feature for creating a rapid test profile, which allows you to provide a testing point - with the data required to perform a rapid test (see Section 6 d.). + identity, your name, your location or other personal details. The only exceptions to this are + the feature for proving a rapid test result, which allows you to display a confirmation issued + in your name for negative rapid test results (see Section 6 c.), and the feature for creating a + rapid test profile, which allows you to provide a testing point with the data required to + perform a rapid test (see Section 6 d.). </p> <p> - The app refrains by default from using analysis tools to evaluate the way you use - it. Only if you expressly agree to voluntarily share data (see Section 5 h.), will certain data - about your use of the app be transmitted to the RKI. + The app refrains by default from using analysis tools to evaluate the way you use it. Only if + you expressly agree to voluntarily share data (see Section 5 h.), will certain data about your + use of the app be transmitted to the RKI. </p> + <p> The data processed by the app can be grouped into the following categories: + </p> -<h2> +<h3> a. Access data -</h2> + +</h3> <p> Every time the app exchanges data over the internet with the RKI’s server system (hereinafter referred to as the <strong>server system</strong>), the @@ -152,6 +136,7 @@ operation of the app and the server system. You will not be identified personally as a user of the app and no user profile will be created. Your IP address will not be stored beyond the end of the usage procedure. + </p> <p> In order to prevent unauthorised parties from using your IP address to @@ -160,10 +145,12 @@ then forwards the data requested or transmitted by the app to the appropriate server, but without your IP address, meaning that your IP address is no longer processed within the server system. + </p> -<h2> +<h3> b. Exposure data -</h2> + +</h3> <p> As soon as you enable your iPhone’s or your Android smartphone’s COVID-19 exposure notification system (which is called “Exposure Notifications†or @@ -197,13 +184,13 @@ </li> </ul> <p> - The random IDs are changed regularly. This helps prevent your smartphone - from being identified using these random IDs. The exposure data transmitted - by your smartphone and the exposure data recorded when you come into - contact with other app users are stored on your smartphone and deleted - after 14 days. The exposure data transmitted by your smartphone is - processed in the same way when it is recorded by the smartphones of other - app users. + The random IDs are changed regularly. This helps prevent your + smartphone from being identified using these random IDs. The exposure + data transmitted by your smartphone and the exposure data recorded when + you come into contact with other app users are stored on your + smartphone and deleted after 14 days. The exposure data transmitted by + your smartphone is processed in the same way when it is recorded by the + smartphones of other app users. </p> <p> Please note: the COVID-19 exposure notification system functionality is @@ -228,9 +215,9 @@ on “How Exposure Notifications work ...â€. </li> </ul> -<h2> +<h3> c. Rapid test data -</h2> +</h3> <p> If you have taken rapid antigen tests at a testing point, you can retrieve the results of these through the app. If you choose to use this service, your testing point will generate an @@ -240,9 +227,9 @@ verification purposes (see Section 6 c. for more information about this feature), the QR code will contain further data provided by you in encoded form. </p> -<h2> +<h3> d. Rapid test profile -</h2> +</h3> <p> You can store information about yourself in your rapid test profile in the app. The rapid test profile includes the following fields: first name, last name, date of birth, street and house @@ -253,9 +240,10 @@ requires more information that is not contained in the QR code, you can also provide this to the testing point in another way. </p> -<h2> + +<h3> e. Event data -</h2> +</h3> <p> If you visit an event (such as a party or concert) or a place (such as a shop or restaurant), you can record your stay there in the app. Event organisers and business owners can provide @@ -279,7 +267,7 @@ stored on your smartphone. </p> <p> - An entry will also be created in your contact journal by default. Sections 5 g. and 6 g. explain + An entry will also be created in your contact journal by default. Sections 5 g. and 6.g. explain this in more detail. If you do not want to create an entry in your contact journal for an event or place, you can simply switch off this feature using the corresponding toggle switch. </p> @@ -298,9 +286,11 @@ Under “My check-insâ€, you can check and delete your previous check-ins and also adjust the check-out time. </p> -<h2> + +<h3> f. Health data -</h2> + +</h3> <p> Health data is any data containing information about a person’s health. This includes not only information about past and current illnesses, but @@ -325,10 +315,12 @@ </ul> <p> Section 6 explains this in more detail. + </p> -<h2> +<h3> g. Entries in the contact journal -</h2> + +</h3> <p> If you use the contact journal to note when and where you met certain people and record certain details of the encounter or contact details for people and places, this information is stored in @@ -337,6 +329,7 @@ contact journal can help you to keep track of your personal contacts over the last 14 days. If you test positive for coronavirus and the public health office (Gesundheitsamt) requests your assistance with contact tracing, then you can quickly provide the information it needs. + </p> <p> Using the contact journal is voluntary. You personally decide whether to store entries in the @@ -345,10 +338,12 @@ should not share your entries with third parties or via insecure communication channels. The competent public health office will tell you what information it needs from you for contact tracing purposes, and how you can provide it. + </p> -<h2> - h. Usage data (data sharing) -</h2> +<h3> + h. Usage Data (data sharing) + +</h3> <p> If you enable data sharing, the app will transmit certain data about your use of the app (hereinafter referred to as usage data) once a day to the RKI. This usage data concerns the @@ -393,8 +388,7 @@ <li>How many days passed since the last notification of an elevated risk before the warning feature was used </li> - <li>How many hours have passed since the test was registered. - </li> + <li>How many hours have passed since the test was registered.</li> </ul> <p> In addition, you can provide further optional information about your region and age group, which @@ -408,10 +402,11 @@ <p> Participation in data sharing is voluntary. To enable the data sharing feature, the authenticity of your app first needs to be confirmed (please note the further information about this under - Sections 5 j. and 11). + Sections 5 j. and 11). </p> -i. Participation in a survey -</h2> +<h3> + i. Participation in a survey +</h3> <p> Some app users are offered to participate in a survey by the RKI. This offer to participate in the survey will usually be contingent on certain events registered in the app (e.g. an elevated @@ -424,11 +419,13 @@ i. Participation in a survey in a survey and whether data should be transmitted to the RKI for this purpose. The surveys take place on a website outside of the app, which you will be redirected to. To enable participation in a survey, the authenticity of your app first needs to be confirmed (please note the further - information about this in Sections 5 i. and 11). + information about this in Sections 5 j. and 11). + </p> -<h2> +<h3> j. Confirmation of the authenticity of your app -</h2> + +</h3> <p> Before you can use some of the app’s features, the authenticity of your app first needs to be checked and confirmed to the RKI. Specifically, this authentication serves to determine whether @@ -444,9 +441,11 @@ i. Participation in a survey the authenticity of your app is voluntary. However, if you do not agree to having the authenticity of your app confirmed, other features of the app may not be available to you. </p> -<h1> + +<h2> 6. Why is your data processed? -</h1> + +</h2> <h3> a. Exposure logging @@ -462,16 +461,15 @@ i. Participation in a survey <p> For this purpose, the app retrieves an up-to-date positive list from the server system several times a day. This list contains information from users who have used the warning feature in an - official coronavirus app (see Section 7). - This positive list contains the random IDs of - users who have activated the warning feature and, if applicable, information about the onset of + official coronavirus app (see Section 7). This positive list contains the random IDs of users + who have activated the warning feature and, if applicable, information about the onset of symptoms. If the users who have activated the warning feature were checked in at events, the positive list also contains the relevant event IDs and the duration of the check-ins (check-in and check-out times). </p> <p> The random IDs and event IDs on the positive lists also contain a transmission risk value and an - indication of the type of diagnosis (see Section 6 e.). + indication of the type of diagnosis (see Section 6 e.). </p> <p> The app passes the random IDs from the positive list to the COVID-19 exposure @@ -514,9 +512,10 @@ i. Participation in a survey unknown to you without realising it, and will not necessarily have anything to do with the people, places or events you recorded in the contact journal. </p> -<h2> +<h3> b. Retrieving a test result -</h2> + +</h3> <p> If you have taken a coronavirus test (PCR test or rapid antigen test), you can retrieve your test result via the app. The app will notify you as soon as your test result is available. For @@ -525,9 +524,11 @@ i. Participation in a survey separate consent to your test result being sent. It is not possible to display test results from testing facilities that are not connected to the app’s server system. If you have not received a QR code, then you cannot use this feature either. + </p> <p> <u>Scanning the QR code</u> + </p> <p> In order to retrieve your test result via the app, you will need to scan the QR code using your @@ -543,42 +544,45 @@ i. Participation in a survey code number that has been hashed on your smartphone and keeps only the token. Once the QR code has been used in this way, it becomes invalid and can no longer be used by anyone. This ensures that no other users can use your QR code to retrieve your test result. + </p> <p> <u>Filing of the test result</u> + </p> <p> As soon as your test result is available, the testing facility stores it in the RKI’s test result database using only the hashed code number. The test result database is located on a special server within the server system. The testing facility generates the hashed code number based on the same QR code that you received. + </p> <p> <u>Retrieval of the test result</u> + </p> <p> - Using the token stored in the app, the app regularly requests the status of - your test from the server system. The server system then informs the app of - the current status (result not yet available / result available). As soon - as your test result is available, the outcome (i.e. whether you have tested - positive or negative for coronavirus) is also transmitted to the app. If - you have enabled the test status notification (under “Settings†> - “Notificationsâ€), you will be notified. The test result will not be - displayed until you open the app. + Using the token stored in the app, the app regularly requests the status of your test from the + server system. The server system then informs the app of the current status (result not yet + available / result available). As soon as your test result is available, the outcome (i.e. + whether you have tested positive or negative for coronavirus) is also transmitted to the app. If + you have enabled the test status notification (under “Settings†> “Notificationsâ€), you will + be notified. The test result will not be displayed until you open the app. + </p> <p> - If you have tested positive for coronavirus, the app uses the token again - to request a TAN (transaction number) from the server system. The TAN is - required to ensure that no false warnings are transmitted to other users. - For this purpose, the server system reassigns the token to the hashed code - number and requests confirmation from the test result database that a - positive test result really does exist for the hashed code number. If this - is confirmed, the server system generates the TAN and transmits it to the - app. A copy of the TAN remains on the server system. + If you have tested positive for coronavirus, the app uses the token again to request a TAN + (transaction number) from the server system. The TAN is required to ensure that no false + warnings are transmitted to other users. For this purpose, the server system reassigns the token + to the hashed code number and requests confirmation from the test result database that a + positive test result really does exist for the hashed code number. If this is confirmed, the + server system generates the TAN and transmits it to the app. A copy of the TAN remains on the + server system. + </p> -<h2> +<h3> c. Proof of a rapid test result -</h2> +</h3> <p> If you retrieve the result of a rapid antigen test and, when you were at the testing facility, you selected the option to have your name displayed in the event of a negative test result, then @@ -609,9 +613,10 @@ i. Participation in a survey data (code, time you were tested) will be deleted as soon as the positive rapid test result is no longer displayed in the app. </p> -<h2> +<h3> d. Rapid test profile -</h2> + +</h3> <p> The rapid test profile feature offers you the possibility to speed up data collection at participating testing points. To do this, you can store information about yourself in your rapid @@ -623,9 +628,10 @@ i. Participation in a survey present it at testing points. If the testing point requires information that is not contained in the QR code, you can provide the information to the testing point in another way. </p> -<h2> +<h3> e. Warning others -</h2> + +</h3> <p> If you have tested positive for coronavirus and share your random IDs with the app, then it is possible to warn other users whom you have encountered. In addition, users who were checked in @@ -644,7 +650,7 @@ i. Participation in a survey Any information about the onset of symptoms </li> <li> - Your TAN (see Section 6 b.). + Your TAN (see Section 6 b.). </li> </ul> <p> @@ -659,21 +665,22 @@ i. Participation in a survey likelihood that you have infected other users. </p> <p> - The information requested by the app about the onset of symptoms is - optional. However, this information may help to calculate the transmission - risk value even more accurately. If you do not provide information about - your symptoms, then the transmission risk values will be calculated - assuming a typical case of infection with coronavirus, i.e. the more time - has passed since a random ID was used, the lower the associated - transmission risk value. + The information requested by the app about the onset of symptoms is optional. However, this + information may help to calculate the transmission risk value even more accurately. If you do + not provide information about your symptoms, then the transmission risk values will be + calculated assuming a typical case of infection with coronavirus, i.e. the more time has passed + since a random ID was used, the lower the associated transmission risk value. + </p> <p> <u>If you have not retrieved your test result in the app:</u> + </p> <p> In the event of a positive rapid antigen test result, you can only warn other people if you retrieved the test result in the app. </p> + <p> In the event of a positive PCR test result, on the other hand, you can warn others even if you received the test result outside the app. To do this, select the “Request TAN†procedure. The @@ -691,27 +698,32 @@ i. Participation in a survey result really does exist and thus prevent false alarms. The app then receives a token from the server system, as it does after a valid QR code is scanned (see “Retrieving a test result†in Section 6 b. above). + </p> <p> Please note that in rare cases, if you use the warning feature, people you know personally who also use the app and then receive a warning, may infer that the warning came from you. This may be the case if a person whom you know had no contact with anyone except with you on the day for which the possible exposure is displayed. + </p> -<h2> +<h3> f. Using the app for information purposes only -</h2> + +</h3> <p> The app automatically receives the daily statistics that appear in the app - via the server system. This generates access data. Websites linked in the - app, such as <u>www.bundesregierung.de</u>, are opened and displayed in - your smartphone’s standard browser (Android smartphones) or within the app (iPhones). - Which data is processed in this context depends on the respective providers - of the websites accessed. + via the server system. This generates access data. Websites linked in the app, such as + <a href="http://www.bundesregierung.de/">www.bundesregierung.de</a>, are + opened and displayed in your smartphone’s standard browser (Android + smartphones) or within the app (iPhones). Which data is processed in this context depends on the + respective providers of the websites accessed. + </p> -<h2> +<h3> g. Contact journal -</h2> + +</h3> <p> The contact journal is an additional feature of the app. What you enter in the contact journal serves as a reminder for you, and can only be accessed by you. If you later test positive for @@ -721,14 +733,16 @@ i. Participation in a survey the people you have had contact with early on. This will give your contacts the chance to decide whether to change their plans if necessary, i.e. to meet up with fewer people and thus reduce the risk of causing undetected infections. + </p> -<h2> +<h3> h. Data sharing -</h2> + +</h3> <p> - Share Data is an additional feature of the app. The usage data and other voluntary - information transmitted to the RKI by the data sharing feature are used to assess the - effectiveness of the app and enable the following improvements: + Data sharing is an additional feature of the app. The usage data and other voluntary information + transmitted to the RKI by the data sharing feature are used to assess the effectiveness of the + app and enable the following improvements: </p> <ul> <li> @@ -762,31 +776,38 @@ i. Participation in a survey The usage data and other voluntary information will be stored and analysed without any connection to your name or identity. This means the RKI will not find out who you are or who you have met. + </p> -<h2> +<h3> i. Surveys -</h2> + +</h3> <p> The surveys take place on a website outside of the app, which you will be redirected to. The app will not transmit any data to the RKI in connection with the surveys. The purposes of an RKI survey are described in the information about the survey on the survey website. + </p> -<h2> +<h3> j. Confirmation of the authenticity of your app -</h2> + +</h3> <p> A feature of your smartphone’s operating system is used to confirm the authenticity of your app. This ensures that only app users whose app is functioning properly can share their data or participate in surveys. This prevents the statistics and survey results from being distorted. </p> + <p> Please note that your operating system provider may be able to tell that your smartphone has been authenticated and may therefore be able to infer your identity. However, your operating system provider will not receive any further information about your use of the Corona-Warn-App. </p> -<h1> + +<h2> 7. How does the transnational warning system work? -</h1> + +</h2> <p> To ensure that users are also warned by the official coronavirus apps of other countries, the RKI, together with several official healthcare bodies @@ -815,10 +836,11 @@ i. Participation in a survey </p> <p> Each server system merges the positive lists received in this way with its - own positive list, which allows the exposure logging feature to also take - into account possible exposures involving users of another coronavirus app - (see section 6 e.) The other participating countries proceed in the same way - with the positive lists provided by the RKI. + own positive list, which allows the exposure logging feature to also + take into account possible exposures involving users of another coronavirus + app (see point 6 e.) The other participating countries proceed in the same + way with the positive lists provided by the RKI. + </p> <p> Only countries whose coronavirus apps are compatible with each other and @@ -855,10 +877,14 @@ i. Participation in a survey Please note that the list of participating countries is subject to change. The current list, with details of the competent health authorities in each case, can be found in the FAQs available at - https://www.coronawarn.app/en/faq/#interoperability_countries . + <a href="https://www.coronawarn.app/en/faq/#interoperability_countries"> + https://www.coronawarn.app/en/faq/#interoperability_countries</a> + . </p> -<h1>8. What permissions does the app require? -</h1> +<h2> + 8. What permissions does the app require? + +</h2> <p> The app requires access to a number of your smartphone’s features and interfaces. For this purpose, you need to grant the app certain @@ -868,10 +894,12 @@ i. Participation in a survey permission category as a whole. Please note that without the permissions requested by the app, you will not be able to use some or all of the app features. + </p> -<h2> +<h3> a. Technical requirements (all smartphones) -</h2> + +</h3> <ul> <li> The app requires an internet connection in order to exchange data with @@ -885,13 +913,13 @@ i. Participation in a survey <li> The app needs to be able to run in the background on your smartphone in order to automatically identify your risk of infection and check the - status of your test. If you deny the app permission to run in the - background, then you must start all actions in the app itself. + status of your test. If you deny the app permission to run in + the background, then you must start all actions in the app itself. </li> </ul> -<h2> +<h3> b. Android smartphones -</h2> +</h3> <p> If you are using an Android smartphone, the following system features must also be enabled: @@ -908,9 +936,9 @@ i. Participation in a survey data is collected in this process. </li> <li> - The notification feature must be enabled so that you can be notified of - changes to your risk of infection and the status of test results. The - notification feature is enabled by default in the operating system. + The notification feature must be enabled so that you can be notified of changes to your risk + of infection and the status of test results. The notification feature is enabled by default + in the operating system. </li> </ul> <p> @@ -922,9 +950,10 @@ i. Participation in a survey camera in order to scan QR codes. </li> </ul> -<h2> +<h3> c. iPhones (Apple iOS) -</h2> + +</h3> <p> If you are using an iPhone, the following system features must be enabled: </p> @@ -946,21 +975,24 @@ i. Participation in a survey camera in order to scan QR codes. </li> </ul> -<h1>9. When will your data be deleted? -</h1> -<p> - The storage period depends on the purposes or app features for which your - data has been stored. When determining the storage period, the RKI takes - into account the latest scientific findings on the incubation period (i.e. - the period between exposure to infection and the appearance of the first - symptoms, which is up to 14 days) as well as on how long there is a risk of - an infected person infecting someone else after the end of the incubation - period. Unless otherwise specified under Section 6, the following storage - periods apply: -</p> + <h2> - a. Data on your smartphone + 9. When will your data be deleted? + </h2> +<p> + The storage period depends on the purposes or app features for which your data has been stored. + When determining the storage period, the RKI takes into account the latest scientific findings + on the incubation period (i.e. the period between exposure to infection and the appearance of + the first symptoms, which is up to 14 days) as well as on how long there is a risk of an + infected person infecting someone else after the end of the incubation period. Unless otherwise + specified under Section 6, the following storage periods apply: +</p> + +<h3> + a. Data on your smartphone + +</h3> <p> The positive lists are deleted from the app memory after 14 days. Event data under “My check-ins†is automatically deleted after 14 days. Alternatively, you can delete entries under @@ -970,35 +1002,41 @@ i. Participation in a survey the warning feature. Your entries in the contact journal will be stored on your smartphone for 16 days before being automatically deleted. You can also delete these entries yourself at any time. Please note that if entries are added to the contact journal when you check in at an event - or place, these will still be stored there even after you delete the associated check-in. - Once you have created your rapid test profile, it will be stored in the app until you delete it + or place, these will still be stored there even after you delete the associated check-in. Once + you have created your rapid test profile, it will be stored in the app until you delete it yourself. </p> -<h2> + +<h3> b. Data on server systems -</h2> + +</h3> <p> Positive lists are deleted from all server systems (including the exchange server) after 14 days. All other data, with the exception of data transmitted by the data sharing feature and to confirm the authenticity of your app, will be deleted after 21 days at the latest. + </p> -<h2> - c. Share Data -</h2> +<h3> + c. Data sharing + +</h3> <p> Usage data and other voluntary information transmitted to the RKI by the data sharing feature will be deleted after 180 days. </p> -<h2> +<h3> d. Confirmation of the authenticity of your app -</h2> + +</h3> <p> The identifier generated by your smartphone to confirm the authenticity of your app will be deleted from the server system after 30 days after transmission to the RKI. </p> -<h1> +<h2> 10. Who will receive your data? -</h1> + +</h2> <p> If you warn other users of a positive PCR test via the app, your test result (in the form of your random IDs from the last 14 days) as well as optional information you provide about the @@ -1009,6 +1047,7 @@ i. Participation in a survey information to their own users as part of the positive lists. Event IDs are only distributed to users of the Corona-Warn-App via the RKI’s server system. In the event of a warning based on a positive rapid antigen test, your data will not be passed on to the exchange servers. + </p> <p> The competent national health authorities have commissioned the EU Commission, as data @@ -1016,6 +1055,7 @@ i. Participation in a survey The exchange server for transnational warnings between the Corona-Warn-App and the Swiss coronavirus app is operated and maintained by the Federal Office of Public Health of the Swiss Confederation in consultation with the RKI. + </p> <p> The RKI has commissioned T-Systems International GmbH and SAP Deutschland @@ -1025,6 +1065,7 @@ i. Participation in a survey RKI’s behalf. The EU Commission has also commissioned these companies, as sub-processors, with the technical provision and management of the participating countries’ joint warning system. + </p> <p> Otherwise, the RKI will only pass on your data collected in connection with @@ -1032,16 +1073,19 @@ i. Participation in a survey or if this is necessary for legal action or criminal prosecution in the case of attacks on the app’s technical infrastructure. In other cases, personal data will not generally be passed on by the RKI. + </p> -<h1> +<h2> 11. Is your data transferred to countries outside the EU? -</h1> + +</h2> <p> If you activate the warning feature based on a positive PCR test, your random IDs will also be transmitted to Switzerland to the exchange server that is operated by the RKI together with the Federal Office of Public Health of the Swiss Confederation. In the event of a warning based on a positive rapid antigen test, no such transmission of your data will take place. </p> + <p> In addition, the confirmation of the authenticity of your app may involve the transfer of data to a country outside the EU. The identifier generated by your smartphone, which contains @@ -1055,47 +1099,51 @@ i. Participation in a survey However, this only concerns the submitted identifier. It does not concern other information from the app, such as exposure data. </p> + <p> Otherwise, the data transmitted by the app is processed exclusively on servers in Germany or in another country in the EU (or the European Economic Area), which are therefore subject to the strict requirements of the General Data Protection Regulation (GDPR). </p> -<h1> - 12. How can you withdraw your consent? -</h1> + +<h2>12. How can you withdraw your consent? + +</h2> <p> - You have the right to withdraw any consent you granted the RKI in the app - at any time with effect for the future. Please note, however, that any - processing of your data that has already been carried out cannot be - reversed. In particular, once your random IDs have been transmitted, the - RKI has no way of deleting these from other users’ smartphones. + You have the right to withdraw any consent you granted the RKI in the app at any time with + effect for the future. Please note, however, that any processing of your data that has already + been carried out cannot be reversed. In particular, once your random IDs have been transmitted, + the RKI has no way of deleting these from other users’ smartphones. + </p> -<h2> - a. Consent to “exposure logging†-</h2> +<h3> + a. Consent to "exposure logging" + +</h3> <p> - You can withdraw your consent to the app’s exposure logging feature at any - time by disabling the feature in the app’s settings or by deleting the app. - If you would like to use the exposure logging feature again, you can - re-enable the feature or reinstall the app. + You can withdraw your consent to the app’s exposure logging feature at any time by disabling the + feature in the app’s settings or by deleting the app. If you would like to use the exposure + logging feature again, you can re-enable the feature or reinstall the app. + </p> -<h2> +<h3> b. Consent to “retrieving a test result†-</h2> + +</h3> <p> - You can withdraw your consent to the test result retrieval feature by - displaying the test in the app and then deleting it. The token for - retrieving the test result will consequently be deleted from the app - memory, so that the token can no longer be assigned on the server system. - It is not possible to assign the same test to your app again or to scan the - same QR code again. If you have been tested again and wish to retrieve the - test result, you will be asked for your consent again. If the test result - is already available in the app, then you can no longer withdraw your + You can withdraw your consent to the test result retrieval feature by displaying the test in the + app and then deleting it. The token for retrieving the test result will consequently be deleted + from the app memory, so that the token can no longer be assigned on the server system. It is not + possible to assign the same test to your app again or to scan the same QR code again. If you + have been tested again and wish to retrieve the test result, you will be asked for your consent + again. If the test result is already available in the app, then you can no longer withdraw your consent. + </p> -<h2> +<h3> c. Consent to “warning others†-</h2> + +</h3> <p> If you would like to withdraw your consent to the transmission of your test result (or, more precisely, your consent to the transmission of your random IDs and event IDs, including the @@ -1127,43 +1175,50 @@ i. Participation in a survey settings. Please also note the information in Section 5 b. </p> -<h2> +<h3> d. Consent to “event check-in†-</h2> +</h3> <p> You can delete entries for events or places at any time under “My check-insâ€. This will prevent data about these events from being used by the feature for warning others, and event IDs from being assigned to you personally or your smartphone. </p> -<h2> - e. Consent to “share data†-</h2> +<h3> + e. Consent to “data sharing†+ +</h3> <p> You can withdraw your consent to the data sharing feature at any time by disabling the data - donation feature in the app’s settings. The app will then no longer transmit your usage data and - other voluntary information to the RKI on a daily basis. If you would like to allow data - donation again, you can re-enable the feature in the settings. + sharing feature in the app’s settings. The app will then no longer transmit your usage data and + other voluntary information to the RKI on a daily basis. If you would like to allow data sharing + again, you can re-enable the feature in the settings. + </p> -<h2> +<h3> f. Consent to “survey participation†-</h2> + +</h3> <p> You do not give your consent to participate in an RKI survey in the app, but via the website on which the survey is conducted. There you will also find information about how you can withdraw your consent. + </p> -<h2> +<h3> g. Consent to “confirmation of the authenticity of your app†-</h2> + +</h3> <p> If you withdraw your consent to the confirmation of your app’s authenticity, this will not directly affect the related data processing. The transmission of the identifier generated by your smartphone to the operating system provider, and the verification and confirmation of the authenticity of your app, take place immediately after you have given your consent. + </p> -<h1> +<h2> 13. What other rights do you have under data protection law? -</h1> + +</h2> <p> If the RKI processes your personal data, you also have the following data protection rights: @@ -1179,19 +1234,19 @@ i. Participation in a survey and raise your concerns (Art. 38(4) GDPR) and </li> <li> - the right to lodge a complaint with a data protection supervisory - authority. To do so, you can either contact your local supervisory - authority or the authority responsible for the RKI. The supervisory - authority responsible for the RKI is the Federal Commissioner for Data - Protection and Freedom of Information, Graurheindorfer Straße 153, - 53117 Bonn. + the right to lodge a complaint with a data protection + supervisory authority. To do so, you can either contact your local + supervisory authority or the authority responsible for the RKI. The + supervisory authority responsible for the RKI is the Federal + Commissioner for Data Protection and Freedom of Information, + Graurheindorfer Straße 153, 53117 Bonn. </li> </ul> <p> - You also have these data protection rights vis-à -vis the health authorities - responsible for data processing in the countries participating in the - exchange server, insofar as you have transmitted your random IDs from - recent days to warn other people (see Section 7). + You also have these data protection rights vis-à -vis the health authorities responsible for data + processing in the countries participating in the exchange server, insofar as you have + transmitted your random IDs from recent days to warn other people (see Section 7). + </p> <p> Please note that the rights mentioned above can only be fulfilled if the @@ -1204,16 +1259,18 @@ i. Participation in a survey objective of collecting as little data as possible. For this reason, it will generally not be possible to fulfil the above data protection rights even if you provide additional information about your identity. + </p> -<h1> +<h2> 14. Data protection officer and contact -</h1> + +</h2> <p> If you have any questions or concerns regarding data protection, you are welcome to send them to the RKI’s official data protection officer by post to Robert Koch-Institut, FAO the data protection officer, Nordufer 20, - 13353 Berlin, or by emailing datenschutz@rki.de. + 13353 Berlin, or by emailing <a href="mailto:datenschutz@rki.de">datenschutz@rki.de</a>. </p> <p> - Last amended: 30 April 2021 + Last amended: 12 May 2021 </p> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/assets/privacy_tr.html b/Corona-Warn-App/src/main/assets/privacy_tr.html index 410bb53ff5f743a34cb576484f0b782d7184834a..19c11bba1c11f568d76f0e4057367e5509649990 100644 --- a/Corona-Warn-App/src/main/assets/privacy_tr.html +++ b/Corona-Warn-App/src/main/assets/privacy_tr.html @@ -27,9 +27,9 @@ Bu metnin tüm kullanıcılar için anlaşılabilir olması amacıyla, mümkün olduÄŸunca basit ve teknik terimler içermeyen bir metin hazırladık. </p> -<h1> - 1. Corona-Warn-App’ın yayımcısı kimdir? -</h1> +<h2> + 1. Corona-Warn-App’ın yayımcısı kimdir? +</h2> <p> Bu Uygulama, Almanya Federal Hükümeti için Robert Koch-Institut (Robert Koch Enstitüsü) (<strong>RKI</strong>) tarafından yayımlanmaktadır. RKI, ayrıca kiÅŸisel verilerinizin, veri @@ -43,9 +43,9 @@ sistemlerine katılan ilgili ülkelerin yetkili saÄŸlık kurumları, verilerin iÅŸlenmesinden müştereken sorumlu olur. Ayrıntılar için Madde 7’ye bakın. </p> -<h1> - 2. Uygulamanın kullanılması isteÄŸe baÄŸlı mı? -</h1> +<h2> + 2. Uygulamanın kullanılması isteÄŸe baÄŸlı mı? +</h2> <p> Uygulamanın kullanılması isteÄŸe baÄŸlıdır. Uygulamayı yüklemeniz, Uygulamanın hangi iÅŸlevlerini kullanmanız ve verileri diÄŸer kiÅŸilerle paylaÅŸmanız noktasında yalnızca siz karar verirsiniz. @@ -53,9 +53,9 @@ ana iÅŸlevleri, sizden önceden açıkça rızanızı vermenizi gerektirir. Rızanızı vermezseniz veya sonradan bu rızayı geri alırsanız, bu durum sizin için bir sakınca doÄŸurmaz. </p> -<h1> +<h2> 3. Verileriniz iÅŸlenmesinde hangi yasal dayanaklar söz konusudur? -</h1> +</h2> <p> Esas itibariyle yalnızca siz daha önce açık bir ÅŸekilde rıza beyanında bulunmuÅŸsanız, verileriniz ancak o zaman RKI tarafından iÅŸlenir. Buradaki yasal dayanak, GVKT (Genel Veri @@ -67,15 +67,15 @@ Kurumu Halef KuruluÅŸları hakkında Kanun) madde 4, fıkra 4 uyarınca RKI tarafından toplumun bilgilendirilmesi kapsamında gerçekleÅŸir. </p> -<h1> +<h2> 4. Uygulama kimleri hedefler? -</h1> +</h2> <p> Uygulama, en az 16 yaşında olan ve Almanya’da yaÅŸayan kiÅŸilere yönelik hazırlanmıştır. </p> -<h1> - 5. Hangi veriler iÅŸlenir? -</h1> +<h2> + 5. Hangi veriler iÅŸlenir? +</h2> <p> Uygulamanın tüm sistemi, mümkün olduÄŸunca az kiÅŸisel verileri iÅŸleyecek ÅŸekilde programlanmıştır. Bu demektir ki sistem, risk deÄŸerlendirmesi, diÄŸer kiÅŸilerin uyarılması ve @@ -97,9 +97,9 @@ <p> Uygulama tarafından iÅŸlenen veriler aÅŸağıdaki kategorilerde sınıflandırılabilir: </p> -<h2> - a. EriÅŸim verileri -</h2> +<h3> + a. EriÅŸim verileri +</h3> <p> Uygulama, RKI’nin sunucu sistemiyle (bundan böyle: <strong>sunucu sistemi</strong>) her veri @@ -135,9 +135,9 @@ sunucusu, Uygulama tarafından talep edilen veya iletilen verileri, IP adresi olmaksızın, yetkili sunucuya iletir, bu sayede IP adresi sunucu sisteminde iÅŸlenmez. </p> -<h2> - b. Maruz kalma verileri -</h2> +<h3> + b. Maruz kalma verileri +</h3> <p> iPhone’unuzun COVID-19 bildirim sistemini (orada “maruz kalma bildirimleri†olarak adlandırılır) @@ -199,9 +199,9 @@ baÄŸlantısı altında bulabilirsiniz. </li> </ul> -<h2> +<h3> c. Hızlı test verileri -</h2> +</h3> <p> Test merkezinde tarafınızca yapılan antijen hızlı testlerin sonuçlarını Uygulama üzerinden açabilirsiniz. Bu tekliften faydalanmak için test merkeziniz sizin için Uygulama ile taramanızın @@ -210,8 +210,11 @@ kanıtlama amaçları için isminizle görüntülemek için kare kodda kodlanmış halde tarafınızca kaydedilen diÄŸer veriler bulunur. </p> -<h2>d. Hızlı test profili</h2> -<p>Uygulamada hızlı test profilinize kiÅŸisel bilgiler kaydedebilirsiniz. Hızlı test profili ÅŸu +<h3> + d. Hızlı test profili +</h3> +<p> + Uygulamada hızlı test profilinize kiÅŸisel bilgiler kaydedebilirsiniz. Hızlı test profili ÅŸu alanları içerir: Ad, soyadı, doÄŸum tarihi, sokak ve hane numarası, posta kodu, ÅŸehir, telefon numarası, e-posta adresi. Uygulama verilerinizi tarafınızca belirtilen tüm verileri içeren kiÅŸisel kara kodunuza dönüştürür. Uygulamada hızlı test profilinin oluÅŸturulması ve bunun test @@ -220,10 +223,9 @@ bulunmayan baÅŸka bilgilerin gerekli olması halinde bu bilgileri test merkezine baÅŸka ÅŸekilde de ulaÅŸtırabilirsiniz. </p> - -<h2> +<h3> e. Olay verileri -</h2> +</h3> <p> Bir olayı (örneÄŸin bir etkinlik, bir parti veya konser) veya bir konumu (örneÄŸin bir maÄŸaza veya bir restoran) ziyaret ettiÄŸinizde, orada bulunmanızı Uygulamaya kaydedebilirsiniz. Bu baÄŸlamda @@ -269,9 +271,9 @@ Olay giriÅŸ denetimlerinin kullanılması isteÄŸe baÄŸlıdır. Olay veya konumunuz için bir QR kod oluÅŸturmaya ve bir olay veya konumda giriÅŸ denetimi yaptırmaya siz kendiniz karar verirsiniz. </p> -<h2> +<h3> f. SaÄŸlık verileri -</h2> +</h3> <p> SaÄŸlık verileri, bir kiÅŸinin saÄŸlığı hakkında bilgiler içeren tüm verilerdir. Bunlar, yalnızca bir kiÅŸinin eski ve güncel hastalıklarıyla ilgili bilgileri deÄŸil, aynı zamanda hastalık riski @@ -296,9 +298,9 @@ <p> Ayrıntılar 6. Maddede açıklanmıştır. </p> -<h2> +<h3> g. Temas güncesindeki veriler -</h2> +</h3> <p> Temas günlüğünüze, hangi kiÅŸilerle ne zaman ve nerede karşılaÅŸtığınızı ve karşılaÅŸmanın @@ -320,9 +322,9 @@ söyleyecektir. </p> -<h2> +<h3> h. Kullanım verileri (veri bağışı) -</h2> +</h3> <p> Veri bağışını etkinleÅŸtirdiÄŸinizde Uygulama, Uygulama kullanımınıza iliÅŸkin belirli verileri @@ -380,11 +382,11 @@ <p> Veri bağışına katılım, gönüllü olarak gerçekleÅŸmektedir. Veri bağışının etkinleÅŸtirilmesi, Uygulamanızın orijinalliÄŸinin doÄŸrulanmasını gerektirir (bu konuyla ilgili daha fazla bilgi için - bkz. Madde 5 j. ve 11.). + bkz. Madde 5 j. ve 11.). </p> -<h2> +<h3> i. Ankete katılım -</h2> +</h3> <p> Uygulamada bazı kullanıcılara bir RKI anketine katılma olanağı verilir. Ankete katılma teklifi @@ -398,11 +400,11 @@ Ankete katılım isteÄŸe baÄŸlıdır. Bir ankete katılmaya ve kullanım verilerinin RKI’ye aktarılmasına, siz kendiniz karar verirsiniz. Bu anketler, yönlendirileceÄŸiniz Uygulama dışındaki bir web sitesinde gerçekleÅŸtirilir. Ankete katılım, Uygulamanızın orijinalliÄŸinin - doÄŸrulanmasını gerektirir (bu konuyla ilgili daha fazla bilgi için bkz. Madde 5 j. ve 11.). + doÄŸrulanmasını gerektirir (bu konuyla ilgili daha fazla bilgi için bkz. Madde 5 j. ve 11.). </p> -<h2> +<h3> j. Uygulamanızın orijinalliÄŸinin doÄŸrulanması -</h2> +</h3> <p> Uygulamadaki bazı iÅŸlevler, Uygulamanızın orijinalliÄŸinin önceden kontrol edilmesini ve RKI için @@ -420,12 +422,12 @@ iÅŸlevin kullanılması isteÄŸe baÄŸlıdır. Ancak Uygulamanızın orijinalliÄŸinin doÄŸrulanmasını kabul etmezseniz, Uygulamanın baÅŸka bazı iÅŸlevleri sizin için sunulmayabilir. </p> -<h1> - 6. Verileriniz niçin iÅŸleniyor? -</h1> <h2> - a. Risk deÄŸerlendirmesi + 6. Verileriniz niçin iÅŸleniyor? </h2> +<h3> + a. Risk deÄŸerlendirmesi +</h3> <p> Uygulamanın ana iÅŸlevlerinden biri, risk deÄŸerlendirmesidir. Bunun görevleri, Korona testi @@ -475,9 +477,9 @@ geri gidebilir ve mutlaka iletiÅŸim günlüğüne girdiÄŸiniz kiÅŸiler veya yerlerle ilgili olması gerekmez. </p> -<h2> +<h3> b. Test sonucu çağırın -</h2> +</h3> <p> Bir korona testi (PCR testi ya da hızlı antijen testi) yaptırdıysanız, test sonucunuzu Uygulama @@ -524,7 +526,7 @@ </p> <p> - <u>Test sonucunun çaÄŸrılması </u> + <u>Test sonucunun çaÄŸrılması </u> </p> <p> @@ -543,9 +545,9 @@ mevcudiyetini doÄŸrulamasını ister. Ä°lgili doÄŸrulama alındığında, sunucu sistemi TAN’ı oluÅŸturur ve bunu uygulamaya iletir. Bu TAN’ın bir kopyası sunucu sisteminde kalır. </p> -<h2> +<h3> c. Hızlı test sonucunun kanıtı -</h2> +</h3> <p> Hızlı antjen testi sonucunu açarsanız ve test kuruluÅŸunda negatif test sonucu durumunda sonucun isminizle görüntülenmesi seçeneÄŸini seçerseniz negatif test bulgusu isminizle, doÄŸum tarihinizle @@ -574,10 +576,10 @@ Uygulamadan hemen silinir. DiÄŸer hızlı test verileriniz Uygulamada poztif çıkan hızlı test sonucu görüntülenmediÄŸi anda (kodlar, test zamanı) silinir. </p> - -<h2> +<h3> d. Hızlı test profili -</h2> +</h3> + <p> Hızlı test profili katılımcı test merkezlerinde verilerin toplanmasının hızlandırılması olanağı saÄŸlar. Bunun için uygulamada hızlı test profilinize kiÅŸisel bilgiler kaydedebilir ve bunları @@ -589,10 +591,9 @@ belirlersiniz. Test merkezinde gereken ve kare kodunda bulunmayan bilgileri test merkezinde farklı ÅŸekilde ibraz edebilirsiniz. </p> - -<h2> +<h3> e. DiÄŸerlerini uyarın -</h2> +</h3> <p> Korona testiniz pozitif çıkmışsa ve siz rastgele kimlik numaralarınızı Uygulama aracılığıyla @@ -665,9 +666,9 @@ karşılaÅŸmanın bildirildiÄŸi gün, sizin dışınızda baÅŸka bir temas kurmaması halinde söz konusu olabilir. </p> -<h2> - f. Uygulamanın bilgilenme amaçlı kullanımı -</h2> +<h3> + f. Uygulamanın bilgilenme amaçlı kullanımı +</h3> <p> Uygulama otomatik olarak sunucu sistemi üzerinden günlük istatistikleri alır ve bunlar @@ -676,9 +677,9 @@ akıllı telefonlar) veya Uygulamada (iPhone’lar) görüntülenir. Hangi verilerin iÅŸleneceÄŸi, eriÅŸilen web sitesinin ilgili saÄŸlayıcısı tarafından belirlenmektedir. </p> -<h2> - g. Temas güncesi -</h2> +<h3> + g. Temas güncesi +</h3> <p> Temas güncesi, Uygulamanın ek bir iÅŸlevidir. Temas güncesindeki veriler, bir hatırlatma görevi @@ -693,9 +694,9 @@ davranışlarını bu duruma ayarlayabilir ve böylece kendi çevrelerinde henüz saptanmamış olası enfeksiyonların önüne geçebilir. </p> -<h2> +<h3> h. Veri bağışı -</h2> +</h3> <p> Veri bağışı, Uygulamanın ek bir iÅŸlevidir. Veri bağışı kapsamında RKI’ye aktarılan kullanım @@ -735,18 +736,18 @@ olmaksızın saklanır ve deÄŸerlendirilir. RKI, kim olduÄŸunuzu veya kiminle karşılaÅŸtığınızı öğrenmez. </p> -<h2> +<h3> i. Anketler -</h2> +</h3> <p> Anketler, Uygulama dışında yönlendirileceÄŸiniz bir web sitesinde gerçekleÅŸtirilir. Uygulama, anketlerle baÄŸlantılı olarak RKI’ye veri aktarımı saÄŸlamaz. RKI tarafından yürütülen anketlerin amaçları, anket web sitesinde anketteki bilgilerde yer almaktadır. </p> -<h2> +<h3> j. Uygulamanızın orijinalliÄŸinin doÄŸrulanması -</h2> +</h3> <p> Uygulamanızın orijinalliÄŸinin doÄŸrulanması için akıllı telefonunuzun iÅŸletim sisteminin bir @@ -757,9 +758,9 @@ ortaya çıkarabileceÄŸini unutmayın. Ancak, iÅŸletim sisteminizin saÄŸlayıcısı Corona-Warn-App kullanımınız hakkında daha fazla bilgi almaz. </p> -<h1> +<h2> 7. Sınır ötesi uyarı sistemi nasıl çalışır? -</h1> +</h2> <p> DiÄŸer ülkelerdeki resmi Korona uygulamalarının kullanıcılarının da uyarılmasını için RKI, bu ülkelerdeki sorumlu merciler ve kurumlar (bundan böyle: <strong>saÄŸlık kurumları</strong>) ile @@ -787,7 +788,7 @@ <p> Ä°lgili sunucu sistemi, aldığı pozitif listeleri kendi pozitif listesiyle birleÅŸtirir, bu sayede risk deÄŸerlendirmesinde, diÄŸer Korona uygulamalarının kullanıcılarıyla olan riskli karşılaÅŸmalar - da dikkate alınabilir (bkz. Madde 6 e.). DiÄŸer katılımcı ülkeler, RKI tarafından saÄŸlanan + da dikkate alınabilir (bkz. Madde 6 e.). DiÄŸer katılımcı ülkeler, RKI tarafından saÄŸlanan pozitif listelerle aynı yöntemi kullanarak çalışmaktadır. </p> <p> @@ -824,9 +825,9 @@ sorulara <a href="https://www.coronawarn.app/en/faq/#interoperability_countries">https://www.coronawarn.app/en/faq/#interoperability_countries</a> adresinden eriÅŸebilirsiniz. </p> -<h1> - 8. Uygulamanın hangi izinlere gerek duyar? -</h1> +<h2> + 8. Uygulamanın hangi izinlere gerek duyar? +</h2> <p> Uygulama, akıllı telefonunuzdaki çeÅŸitli iÅŸlevlere ve arabirimlere eriÅŸim gerektirir. Bunun için, Uygulamaya belli bazı izinleri vermenizi gereklidir. Bu yetkilendirme sistemi, iÅŸletim @@ -836,9 +837,9 @@ yetkiler verilmezse, hiçbir Uygulama iÅŸlevinin kullanılamayacağını veya yalnızca birkaçının kullanılabileceÄŸini lütfen unutmayın. </p> -<h2> - a. Teknik gereksinimler (tüm akıllı telefonlar) -</h2> +<h3> + a. Teknik gereksinimler (tüm akıllı telefonlar) +</h3> <ul> <li> @@ -856,9 +857,9 @@ devre dışı bırakırsanız, Uygulamanın tüm eylemlerini kendiniz baÅŸlatmanız gerekir. </li> </ul> -<h2> +<h3> b. Android akıllı telefonları -</h2> +</h3> <p> Bir Android akıllı telefon kullanıyorsanız, ayrıca aÅŸağıdaki sistem iÅŸlevlerinin de @@ -887,9 +888,9 @@ eriÅŸim yetkisi gerektirir. </li> </ul> -<h2> +<h3> c. iPhone’lar (Apple iOS) -</h2> +</h3> <p> Bir iPhone kullanıyorsanız, aÅŸağıdaki sistem iÅŸlevlerinin de etkinleÅŸtirilmesi gerekir: @@ -912,9 +913,9 @@ eriÅŸim yetkisi gerektirir. </li> </ul> -<h1> - 9. Verileriniz ne zaman silinir? -</h1> +<h2> + 9. Verileriniz ne zaman silinir? +</h2> <p> Saklama süresi, verilerinizin kaydedildiÄŸi amaçlara veya Uygulama iÅŸlevlerine göre deÄŸiÅŸmektedir. Verilerin saklama süresini belirlerken RKI, 14 güne kadar süren inkübasyon dönemi @@ -923,9 +924,9 @@ iliÅŸkin güncel bilimsel bulguları dikkate alır. Madde 6’da daha kısa bir saklama süresi belirtilmedikçe, aÅŸağıdaki süreler geçerlidir: </p> -<h2> - a. Akıllı telefonunuzdaki veriler -</h2> +<h3> + a. Akıllı telefonunuzdaki veriler +</h3> <p> Pozitif listeler 14 gün geçtikten sonra Uygulama belleÄŸinden silinir. “GiriÅŸ denetimlerim†@@ -940,32 +941,32 @@ günlüğündeki verilerin hâlâ orada saklı kaldıklarını lütfen unutmayın. Bir kez hızlı test profili oluÅŸturduysanız bu, siz tekrar silene kadar uygulamada kalır. </p> -<h2> +<h3> b. Sunucu sistemlerindeki veriler -</h2> +</h3> <p> Pozitif listeler, 14 gün sonra tüm sunucu sistemlerinden (deÄŸiÅŸim sunucuları dahil) silinir. DiÄŸer tüm veriler en geç 21 gün sonra silinir. </p> -<h2> +<h3> c. Veri bağışı -</h2> +</h3> <p> Veri bağışı kapsamında RKI’ye aktarılan kullanım verileri ve diÄŸer isteÄŸe baÄŸlı veriler 180 gün sonra silinir.</p> -<h2> +<h3> d. Uygulamanızın orijinalliÄŸinin doÄŸrulanması -</h2> +</h3> <p> Uygulamanızın orijinalliÄŸini doÄŸrulamak için akıllı telefonunuzun oluÅŸturduÄŸu kimlik kodları, RKI’ye gönderildikten 30 gün sonra sunucu sistemlerinden silinir. </p> -<h1> +<h2> 10. Verileriniz kime aktarılır? -</h1> +</h2> <p> Uygulama aracılığıyla diÄŸer kullanıcıları pozitif PCR testi nedeniyle uyardığınızda, test sonucunuz son 14 güne ait rastgele kimlik numaralarınız halinde ve semptomların baÅŸlangıcına @@ -997,9 +998,9 @@ kovuÅŸturma için ifÅŸa edilmesi gerekli olduÄŸu takdirde üçüncü taraflara aktarır. DiÄŸer durumlarda RKI tarafından veri aktarımı gerçekleÅŸmez. </p> -<h1> +<h2> 11. Verileriniz AB dışındaki ülkelere aktarılacak mı? -</h1> +</h2> <p> Pozitif PCR testi nedeniyle uyarıyı tetiklediÄŸinizde, rastgele kimlik numaralarınız, Ä°sviçre Federal SaÄŸlık Dairesi ile birlikte RKI tarafından iÅŸletilen Ä°sviçre’deki veri deÄŸiÅŸim @@ -1027,18 +1028,18 @@ dolayısıyla Genel Veri Koruma Tüzüğünün (GVKT) katı gerekliliklerine tabi kalır. </p> -<h1> - 12. VerdiÄŸiniz rıza beyanını nasıl geri alabilirsiniz? -</h1> +<h2> + 12. VerdiÄŸiniz rıza beyanını nasıl geri alabilirsiniz? +</h2> <p> GeleceÄŸe dönük geçerli olmak üzere, Uygulamada RKI’ye verdiÄŸiniz bir onayı istediÄŸiniz zaman geri alma hakkına sahipsiniz. Bununla birlikte, verileriniz iÅŸlenmesi halen gerçekleÅŸtirilmiÅŸ ise artık bu iÅŸlemler geri alınamaz. RKI’nin, özellikle akıllı telefonlardan diÄŸer kullanıcılara halen aktarılmış olan rastgele kimlik numaralarını silme olanağı yoktur. </p> -<h2> +<h3> a. Maruz kalma güncesine iliÅŸkin rıza beyanı -</h2> +</h3> <p> Maruz kalma güncesine vermiÅŸ olduÄŸunuz rıza beyanını, istediÄŸiniz zaman Uygulamadaki kaydırıcıyı @@ -1046,9 +1047,9 @@ deÄŸerlendirmesini tekrar kullanmak isterseniz, kaydırıcıyı yeniden etkinleÅŸtirebilir veya Uygulamayı yeniden yükleyebilirsiniz. </p> -<h2> +<h3> b. “Test sonucunu çağırın†iÅŸlevine dair rıza beyanı -</h2> +</h3> <p> Uygulamanın test sonucunu çağırması için verdiÄŸiniz rıza beyanını, testi Uygulamada @@ -1059,20 +1060,10 @@ rıza beyanında bulunmanız istenecektir. Ancak test sonucu Uygulamada halen mevcutsa, ilgili rıza beyanı artık geri alınamaz. </p> -<h2> +<h3> c. “DiÄŸerlerini uyarın†iÅŸlevine dair rıza beyanı -</h2> -<p> - DiÄŸer insanları uyarmak için test sonucunuzun ( (daha doÄŸrusu, son 14 güne dair rastgele kimlik - numaralarınız, olay kimlikleriniz ve kaydedilen giriÅŸ ve çıkış denetim zamanlarınızın) - aktarılmasına iliÅŸkin vermiÅŸ olduÄŸunuz rıza beyanını, testi görüntüleyerek ve ardından - “DiÄŸerlerini uyar†seçeneÄŸini devre dışı bırakarak iptal edebilirsiniz. Ayrıca “GiriÅŸ - denetimlerim†altındaki olayların veya konumlara ait veri giriÅŸlerini silebilir ve böylece bu - olaylara iliÅŸkin verilerin uyarı gönderimi kapsamında kullanılmasını önleyebilirsiniz. Bu - olanak, diÄŸer kullanıcıları uyarmak için henüz rastgele kimlik numaralarınızı göndermediÄŸiniz - sürece söz konusudur. -</p> - +</h3> +DiÄŸer insanları uyarmak için test sonucunuzun ( (daha doÄŸrusu, son 14 güne dair rastgele kimlik numaralarınız, olay kimlikleriniz ve kaydedilen giriÅŸ ve çıkış denetim zamanlarınızın) aktarılmasına iliÅŸkin vermiÅŸ olduÄŸunuz rıza beyanını, testi görüntüleyerek ve ardından “DiÄŸerlerini uyar†seçeneÄŸini devre dışı bırakarak iptal edebilirsiniz. Ayrıca “GiriÅŸ denetimlerim†altındaki olayların veya konumlara ait veri giriÅŸlerini silebilir ve böylece bu olaylara iliÅŸkin verilerin uyarı gönderimi kapsamında kullanılmasını önleyebilirsiniz. Bu olanak, diÄŸer kullanıcıları uyarmak için henüz rastgele kimlik numaralarınızı göndermediÄŸiniz sürece söz konusudur. <p> Rastgele kimlik numaralarınızı gönderdikten sonra, verdiÄŸiniz rıza beyanını geri almanın tek yolu artık Uygulamayı silmektir. Sunucu sistemine halen iletilmiÅŸ olan rastgele kimlik @@ -1094,17 +1085,17 @@ maruz kalma verilerinizi silme iÅŸlemini, muhtemelen akıllı telefonunuzun sistem ayarlarında manuel olarak gerçekleÅŸtirmelisiniz. Bunun için Madde 5 b altındaki bilgileri de dikkate alın. </p> -<h2> +<h3> d. “Olay giriÅŸ denetimleri†rıza beyanı -</h2> +</h3> <p> “GiriÅŸ denetimlerim†altındaki olay veya konum veri giriÅŸlerini istediÄŸi zaman silebilirsiniz. Böylece, bu olaylarla ilgili verilerin "DiÄŸerlerini uyar†iÅŸlevine baÄŸlı olarak kullanılmasını ve olay kimliklerinin size veya akıllı telefonunuza atanmasını önleyebilirsiniz. </p> -<h2> +<h3> e. “Veri bağışı†rıza beyanı -</h2> +</h3> <p> Uygulamanın ayarlarından “Verileri bağışla†seçeneÄŸini devre dışı bırakarak, istediÄŸiniz zaman @@ -1112,18 +1103,18 @@ ve diÄŸer isteÄŸe baÄŸlı verileri günlük olarak RKI’ye aktarmayacaktır. Daha sonra veri bağışına yeniden izin vermek isterseniz, ilgili iÅŸlevi ayarlardan yeniden etkinleÅŸtirebilirsiniz. </p> -<h2> +<h3> f. “Anket†rıza beyanı -</h2> +</h3> <p> Bir RKI anketine katılmak için gereken rızanızı, Uygulamada deÄŸil, anketin gerçekleÅŸtirildiÄŸi web sitesi üzerinden verirsiniz. Orada, verdiÄŸiniz rızayı nasıl geri alabileceÄŸinize iliÅŸkin bir açıklama da bulunmaktadır. </p> -<h2> +<h3> g. “Uygulamanızın orijinalliÄŸinin doÄŸrulanması†rıza beyanı -</h2> +</h3> <p> Uygulamanızın orijinalliÄŸinin doÄŸrulanması için verdiÄŸiniz rızayı geri alırsanız, bunun ilgili @@ -1131,9 +1122,9 @@ akıllı telefonunuz tarafından oluÅŸturulan kimlik kodu, iÅŸletim sisteminizin saÄŸlayıcısına aktarılır ve Uygulamanızın orijinalliÄŸinin doÄŸrulanması ve onaylanması orada gerçekleÅŸir. </p> -<h1> +<h2> 13. BaÅŸka hangi veri koruma haklarına sahipsiniz? -</h1> +</h2> <p> KiÅŸisel verilerinizi RKI tarafından iÅŸlendiÄŸi sürece, ek olarak aÅŸağıdaki veri koruma haklarına da sahipsiniz: @@ -1143,7 +1134,9 @@ GVKT madde 15, 16, 17, 18, 20 ve 21 kapsamındaki haklar, </li> <li> - <a href="https://www.rki.de/DE/Content/Institut/OrgEinheiten/Datenschutz/Datenschutz_node.html"> + <a + href="https://www.rki.de/DE/Content/Institut/OrgEinheiten/Datenschutz/Datenschutz_node.html" + > RKI’nin veri koruma görevlisi </a> ile iletiÅŸim geçme ve isteklerinizi dile getirme hakkı (GVKT madde 38, fıkra 4 uyarınca) ve @@ -1172,14 +1165,14 @@ yukarıda belirtilen veri koruma hakları, kimliÄŸiniz hakkında vermiÅŸ olduÄŸunuz ek bilgilerle bile genellikle yerine getirilememektedir. </p> -<h1> - 14. Veri koruma görevlisi ve iletiÅŸim -</h1> +<h2> + 14. Veri koruma görevlisi ve iletiÅŸim +</h2> <p> Veri gizliliÄŸine iliÅŸkin sorularınızı ve endiÅŸelerinizi RKI’nin resmi veri koruma görevlisine gönderebilirsiniz: Robert Koch-Institut, z. H. des Datenschutzbeauftragten (veri koruma görevlisi), Nordufer 20,13353 Berlin veya e-posta yoluyla: <a href="mailto:datenschutz@rki.de">datenschutz@rki.de</a>. </p> <p> - Baskı 30.04.2021 -</p> \ No newline at end of file + Baskı 12.05.2021 +</p> diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/TransactionException.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/TransactionException.kt deleted file mode 100644 index c7dd5daca0247d3e705b6cc4bc0c468be1341f2c..0000000000000000000000000000000000000000 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/exception/TransactionException.kt +++ /dev/null @@ -1,21 +0,0 @@ -package de.rki.coronawarnapp.exception - -import de.rki.coronawarnapp.exception.reporting.ErrorCodes -import de.rki.coronawarnapp.exception.reporting.ReportedException -import java.util.UUID - -/** - * An Exception thrown when an error occurs inside the Transaction - * - * @param transactionId the atomic Transaction ID - * @param state the atomic Transaction state (defined in the Transaction) with a valid ToString - * @param cause the cause of the error - * - * @see de.rki.coronawarnapp.transaction.Transaction - */ -class TransactionException constructor(transactionId: UUID, state: String, cause: Throwable?) : - ReportedException( - ErrorCodes.TRANSACTION_PROBLEM.code, - "An error occurred during execution of transaction $transactionId, State $state", - cause - ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningFragment.kt index 03e2b7cd6e30e82ead765ca2331cc576518a4480..562c87cfc33584fcd0b33e0755fd53d514160cde 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningFragment.kt @@ -7,14 +7,14 @@ import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.navigation.fragment.navArgs import de.rki.coronawarnapp.R -import de.rki.coronawarnapp.coronatest.server.CoronaTestResult +import de.rki.coronawarnapp.bugreporting.ui.toErrorDialogBuilder +import de.rki.coronawarnapp.coronatest.qrcode.InvalidQRCodeException import de.rki.coronawarnapp.coronatest.type.CoronaTest import de.rki.coronawarnapp.databinding.FragmentSubmissionDeletionWarningBinding import de.rki.coronawarnapp.exception.http.BadRequestException import de.rki.coronawarnapp.exception.http.CwaClientError import de.rki.coronawarnapp.exception.http.CwaServerError import de.rki.coronawarnapp.exception.http.CwaWebException -import de.rki.coronawarnapp.ui.submission.ApiRequestState import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.di.AutoInject @@ -24,6 +24,7 @@ import de.rki.coronawarnapp.util.ui.observe2 import de.rki.coronawarnapp.util.ui.viewBindingLazy import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted +import timber.log.Timber import javax.inject.Inject class SubmissionDeletionWarningFragment : Fragment(R.layout.fragment_submission_deletion_warning), AutoInject { @@ -46,7 +47,6 @@ class SubmissionDeletionWarningFragment : Fragment(R.layout.fragment_submission_ super.onViewCreated(view, savedInstanceState) binding.apply { - when (viewModel.getTestType()) { CoronaTest.Type.PCR -> { headline.text = getString(R.string.submission_deletion_warning_headline_pcr_test) @@ -59,122 +59,63 @@ class SubmissionDeletionWarningFragment : Fragment(R.layout.fragment_submission_ } } - continueButton.setOnClickListener { - viewModel.deleteExistingAndRegisterNewTest() - } + continueButton.setOnClickListener { viewModel.deleteExistingAndRegisterNewTest() } - toolbar.setNavigationOnClickListener { - viewModel.onCancelButtonClick() - } - } - - viewModel.showRedeemedTokenWarning.observe2(this) { - val dialog = DialogHelper.DialogInstance( - requireActivity(), - R.string.submission_error_dialog_web_tan_redeemed_title, - R.string.submission_error_dialog_web_tan_redeemed_body, - R.string.submission_error_dialog_web_tan_redeemed_button_positive - ) - - DialogHelper.showDialog(dialog) - - navigateToDispatchScreen() + toolbar.setNavigationOnClickListener { viewModel.onCancelButtonClick() } } viewModel.registrationState.observe2(this) { state -> - binding.submissionQrCodeScanSpinner.isVisible = state.apiRequestState == ApiRequestState.STARTED - binding.continueButton.isVisible = state.apiRequestState != ApiRequestState.STARTED - - if (ApiRequestState.SUCCESS == state.apiRequestState) { - - when (viewModel.getRegistrationType()) { - SubmissionDeletionWarningViewModel.RegistrationType.QR -> { - if (state.testResult == CoronaTestResult.PCR_POSITIVE) { - viewModel.triggerNavigationToSubmissionTestResultAvailableFragment() - } else { - viewModel.triggerNavigationToSubmissionTestResultPendingFragment() - } - } - SubmissionDeletionWarningViewModel.RegistrationType.TAN -> { - doNavigate( - SubmissionDeletionWarningFragmentDirections - .actionSubmissionDeletionFragmentToSubmissionTestResultNoConsentFragment( - viewModel.getTestType() - ) - ) - } - } - } + binding.submissionQrCodeScanSpinner.isVisible = state.isFetching + binding.continueButton.isVisible = !state.isFetching && state.coronaTest == null } viewModel.registrationError.observe2(this) { - DialogHelper.showDialog(buildErrorDialog(it)) + showErrorDialog(it) + doNavigate( + SubmissionDeletionWarningFragmentDirections + .actionSubmissionDeletionWarningFragmentToSubmissionDispatcherFragment() + ) } viewModel.routeToScreen.observe2(this) { - when (it) { - SubmissionNavigationEvents.NavigateToConsent -> { - doNavigate( - SubmissionDeletionWarningFragmentDirections - .actionSubmissionDeletionWarningFragmentToSubmissionConsentFragment() - ) - } - is SubmissionNavigationEvents.NavigateToResultAvailableScreen -> { - doNavigate( - SubmissionDeletionWarningFragmentDirections - .actionSubmissionDeletionWarningFragmentToSubmissionTestResultAvailableFragment( - testType = it.coronaTestType - ) - ) - } - is SubmissionNavigationEvents.NavigateToResultPendingScreen -> { - doNavigate( - SubmissionDeletionWarningFragmentDirections - .actionSubmissionDeletionWarningFragmentToSubmissionTestResultPendingFragment( - testType = it.coronaTestType - ) - ) - } - } + Timber.d("Navigating to %s", it) + doNavigate(it) } } - private fun navigateToDispatchScreen() = - doNavigate( - SubmissionDeletionWarningFragmentDirections - .actionSubmissionDeletionWarningFragmentToSubmissionDispatcherFragment() - ) - - private fun buildErrorDialog(exception: CwaWebException): DialogHelper.DialogInstance { - return when (exception) { - is BadRequestException -> DialogHelper.DialogInstance( - requireActivity(), - R.string.submission_qr_code_scan_invalid_dialog_headline, - R.string.submission_qr_code_scan_invalid_dialog_body, - R.string.submission_qr_code_scan_invalid_dialog_button_positive, - R.string.submission_qr_code_scan_invalid_dialog_button_negative, - true, - { /* startDecode() */ }, - ::navigateToDispatchScreen - ) - is CwaClientError, is CwaServerError -> DialogHelper.DialogInstance( - requireActivity(), - R.string.submission_error_dialog_web_generic_error_title, - R.string.submission_error_dialog_web_generic_network_error_body, - R.string.submission_error_dialog_web_generic_error_button_positive, - null, - true, - ::navigateToDispatchScreen - ) - else -> DialogHelper.DialogInstance( - requireActivity(), - R.string.submission_error_dialog_web_generic_error_title, - R.string.submission_error_dialog_web_generic_error_body, - R.string.submission_error_dialog_web_generic_error_button_positive, - null, - true, - ::navigateToDispatchScreen - ) - } + private fun showErrorDialog(exception: Throwable) = when (exception) { + is InvalidQRCodeException -> DialogHelper.DialogInstance( + context = requireActivity(), + title = R.string.submission_error_dialog_web_tan_redeemed_title, + message = R.string.submission_error_dialog_web_tan_redeemed_body, + cancelable = true, + positiveButton = R.string.submission_error_dialog_web_tan_redeemed_button_positive, + positiveButtonFunction = { /* dismiss */ }, + ).run { DialogHelper.showDialog(this) } + is BadRequestException -> DialogHelper.DialogInstance( + context = requireActivity(), + title = R.string.submission_qr_code_scan_invalid_dialog_headline, + message = R.string.submission_qr_code_scan_invalid_dialog_body, + cancelable = true, + positiveButton = R.string.submission_qr_code_scan_invalid_dialog_button_positive, + positiveButtonFunction = { /* dismiss */ }, + ).run { DialogHelper.showDialog(this) } + is CwaClientError, is CwaServerError -> DialogHelper.DialogInstance( + context = requireActivity(), + title = R.string.submission_error_dialog_web_generic_error_title, + message = R.string.submission_error_dialog_web_generic_network_error_body, + cancelable = true, + positiveButton = R.string.submission_error_dialog_web_generic_error_button_positive, + positiveButtonFunction = { /* dismiss */ }, + ).run { DialogHelper.showDialog(this) } + is CwaWebException -> DialogHelper.DialogInstance( + context = requireActivity(), + title = R.string.submission_error_dialog_web_generic_error_title, + message = R.string.submission_error_dialog_web_generic_error_body, + cancelable = true, + positiveButton = R.string.submission_error_dialog_web_generic_error_button_positive, + positiveButtonFunction = { /* dismiss */ }, + ).run { DialogHelper.showDialog(this) } + else -> exception.toErrorDialogBuilder(requireContext()).show() } override fun onResume() { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningViewModel.kt index 9a46d82aebba0fa406f8dba7e51723aa88e09d19..4315b50048b0d53f0040abb2a11ea20e846eb080 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/deletionwarning/SubmissionDeletionWarningViewModel.kt @@ -1,24 +1,17 @@ package de.rki.coronawarnapp.ui.submission.deletionwarning -import androidx.annotation.VisibleForTesting import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData +import androidx.navigation.NavDirections import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import de.rki.coronawarnapp.coronatest.CoronaTestRepository import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode import de.rki.coronawarnapp.coronatest.qrcode.InvalidQRCodeException -import de.rki.coronawarnapp.coronatest.server.CoronaTestResult import de.rki.coronawarnapp.coronatest.tan.CoronaTestTAN import de.rki.coronawarnapp.coronatest.type.CoronaTest -import de.rki.coronawarnapp.exception.ExceptionCategory -import de.rki.coronawarnapp.exception.TransactionException -import de.rki.coronawarnapp.exception.http.CwaWebException -import de.rki.coronawarnapp.exception.reporting.report import de.rki.coronawarnapp.submission.SubmissionRepository -import de.rki.coronawarnapp.ui.submission.ApiRequestState -import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents import de.rki.coronawarnapp.util.ui.SingleLiveEvent import de.rki.coronawarnapp.util.viewmodel.CWAViewModel import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory @@ -26,154 +19,123 @@ import kotlinx.coroutines.flow.first import timber.log.Timber class SubmissionDeletionWarningViewModel @AssistedInject constructor( - private val coronaTestRepository: CoronaTestRepository, - private val submissionRepository: SubmissionRepository, @Assisted private val coronaTestQrCode: CoronaTestQRCode?, @Assisted private val coronaTestQrTan: CoronaTestTAN?, - @Assisted private val isConsentGiven: Boolean, + private val submissionRepository: SubmissionRepository, + private val coronaTestRepository: CoronaTestRepository, ) : CWAViewModel() { - val routeToScreen = SingleLiveEvent<SubmissionNavigationEvents>() - val showRedeemedTokenWarning = SingleLiveEvent<Unit>() - private val mutableRegistrationState = MutableLiveData(RegistrationState(ApiRequestState.IDLE)) + val routeToScreen = SingleLiveEvent<NavDirections>() + private val mutableRegistrationState = MutableLiveData(RegistrationState()) val registrationState: LiveData<RegistrationState> = mutableRegistrationState - val registrationError = SingleLiveEvent<CwaWebException>() + val registrationError = SingleLiveEvent<Throwable>() - fun deleteExistingAndRegisterNewTest() = launch { - when (getRegistrationType()) { - RegistrationType.QR -> deleteExistingAndRegisterNewTestWithQrCode() - RegistrationType.TAN -> deleteExistingAndRegisterNewTestWitTAN() - } + private fun getRegistrationType(): RegistrationType = if (coronaTestQrCode != null) { + RegistrationType.QR + } else { + RegistrationType.TAN } - private suspend fun deleteExistingAndRegisterNewTestWithQrCode() { - try { - val currentTest = submissionRepository.testForType(coronaTestQrCode!!.type).first() - coronaTestRepository.removeTest(currentTest!!.identifier) - doDeviceRegistration(coronaTestQrCode) - } catch (err: Exception) { - Timber.e(err, "Removal of existing test failed with msg: ${err.message}") - err.report(ExceptionCategory.INTERNAL) + // If there is no qrCode, it must be a TAN, and TANs are always PCR + internal fun getTestType(): CoronaTest.Type = coronaTestQrCode?.type ?: CoronaTest.Type.PCR + + fun deleteExistingAndRegisterNewTest() = launch { + when { + coronaTestQrTan != null -> deleteExistingAndRegisterNewTestWitTAN() + else -> deleteExistingAndRegisterNewTestWithQrCode() } } - private suspend fun deleteExistingAndRegisterNewTestWitTAN() { + private suspend fun deleteExistingAndRegisterNewTestWithQrCode() = try { + requireNotNull(coronaTestQrCode) { "QR Code was unavailable" } + + // Remove existing test and wait until that is done + submissionRepository.testForType(coronaTestQrCode.type).first()?.let { + coronaTestRepository.removeTest(it.identifier) + } ?: Timber.w("Test we will replace with QR was already removed?") - try { - val currentTest = submissionRepository.testForType(CoronaTest.Type.PCR).first() - coronaTestRepository.removeTest(currentTest!!.identifier) - onTanSubmit() - } catch (err: Exception) { - Timber.e(err, "Removal of existing test failed with msg: ${err.message}") - err.report(ExceptionCategory.INTERNAL) + mutableRegistrationState.postValue(RegistrationState(isFetching = true)) + + val coronaTest = submissionRepository.registerTest(coronaTestQrCode) + + if (coronaTest.isFinal) { + Timber.d("New test was already final, removing it again: %s", coronaTest) + // This does not wait until the test is removed, + // the exception handling should navigate the user to a new screen anyways + submissionRepository.removeTestFromDevice(type = coronaTest.type) + + throw InvalidQRCodeException() } - } - private suspend fun onTanSubmit() { - - try { - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.STARTED)) - submissionRepository.registerTest(coronaTestQrTan!!) - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.SUCCESS)) - } catch (err: CwaWebException) { - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.FAILED)) - registrationError.postValue(err) - } catch (err: TransactionException) { - if (err.cause is CwaWebException) { - registrationError.postValue(err.cause) - } else { - err.report(ExceptionCategory.INTERNAL) - } - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.FAILED)) - } catch (err: Exception) { - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.FAILED)) - err.report(ExceptionCategory.INTERNAL) + if (isConsentGiven) { + submissionRepository.giveConsentToSubmission(type = coronaTestQrCode.type) } - } - data class RegistrationState( - val apiRequestState: ApiRequestState, - val testResult: CoronaTestResult? = null - ) + continueWithNewTest(coronaTest) - @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) - internal suspend fun doDeviceRegistration(coronaTestQRCode: CoronaTestQRCode) { - try { - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.STARTED)) - val coronaTest = submissionRepository.registerTest(coronaTestQRCode) - if (isConsentGiven) { - submissionRepository.giveConsentToSubmission(type = coronaTestQRCode.type) - } - checkTestResult(coronaTest.testResult) - mutableRegistrationState.postValue( - RegistrationState( - ApiRequestState.SUCCESS, - coronaTest.testResult - ) - ) - } catch (err: CwaWebException) { - Timber.e(err, "Msg: ${err.message}") - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.FAILED)) - registrationError.postValue(err) - } catch (err: TransactionException) { - Timber.e(err, "Msg: ${err.message}") - if (err.cause is CwaWebException) { - registrationError.postValue(err.cause) - } else { - err.report(ExceptionCategory.INTERNAL) - } - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.FAILED)) - } catch (err: InvalidQRCodeException) { - Timber.e(err, "Msg: ${err.message}") - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.FAILED)) - deregisterTestFromDevice(coronaTestQRCode) - showRedeemedTokenWarning.postValue(Unit) - } catch (err: Exception) { - Timber.e(err, "Msg: ${err.message}") - mutableRegistrationState.postValue(RegistrationState(ApiRequestState.FAILED)) - err.report(ExceptionCategory.INTERNAL) - } + mutableRegistrationState.postValue(RegistrationState(coronaTest = coronaTest)) + } catch (e: Exception) { + Timber.e(e, "Error during test registration via QR code") + mutableRegistrationState.postValue(RegistrationState(isFetching = false)) + registrationError.postValue(e) } - fun onCancelButtonClick() { - routeToScreen.postValue(SubmissionNavigationEvents.NavigateToConsent) - } + private suspend fun deleteExistingAndRegisterNewTestWitTAN() = try { + requireNotNull(coronaTestQrTan) { "TAN was unavailable" } - fun triggerNavigationToSubmissionTestResultAvailableFragment() { - routeToScreen.postValue(SubmissionNavigationEvents.NavigateToResultAvailableScreen(coronaTestQrCode!!.type)) - } + submissionRepository.testForType(CoronaTest.Type.PCR).first()?.let { + coronaTestRepository.removeTest(it.identifier) + } ?: Timber.w("Test we will replace with TAN was already removed?") - fun triggerNavigationToSubmissionTestResultPendingFragment() { - routeToScreen.postValue(SubmissionNavigationEvents.NavigateToResultPendingScreen(coronaTestQrCode!!.type)) - } + mutableRegistrationState.postValue(RegistrationState(isFetching = true)) - private fun checkTestResult(testResult: CoronaTestResult) { - if (testResult == CoronaTestResult.PCR_REDEEMED) { - throw InvalidQRCodeException() - } - } + val coronaTest = submissionRepository.registerTest(coronaTestQrTan) + continueWithNewTest(coronaTest) - private fun deregisterTestFromDevice(coronaTest: CoronaTestQRCode) { - launch { - Timber.d("deregisterTestFromDevice()") + mutableRegistrationState.postValue(RegistrationState(coronaTest = coronaTest)) + } catch (e: Exception) { + Timber.e(e, "Error during test registration via TAN") + mutableRegistrationState.postValue(RegistrationState(isFetching = false)) + registrationError.postValue(e) + } - submissionRepository.removeTestFromDevice(type = coronaTest.type) - routeToScreen.postValue(SubmissionNavigationEvents.NavigateToMainActivity) - } + fun onCancelButtonClick() { + SubmissionDeletionWarningFragmentDirections + .actionSubmissionDeletionWarningFragmentToSubmissionConsentFragment() + .run { routeToScreen.postValue(this) } } - fun getRegistrationType(): RegistrationType { - return if (coronaTestQrCode != null) { - RegistrationType.QR - } else { - RegistrationType.TAN + private fun continueWithNewTest(coronaTest: CoronaTest) { + Timber.d("Continuing with our new CoronaTest: %s", coronaTest) + when (getRegistrationType()) { + RegistrationType.QR -> { + if (coronaTest.isPositive) { + SubmissionDeletionWarningFragmentDirections + .actionSubmissionDeletionWarningFragmentToSubmissionTestResultAvailableFragment( + testType = coronaTestQrCode!!.type + ) + .run { routeToScreen.postValue(this) } + } else { + SubmissionDeletionWarningFragmentDirections + .actionSubmissionDeletionWarningFragmentToSubmissionTestResultPendingFragment( + testType = coronaTestQrCode!!.type + ) + .run { routeToScreen.postValue(this) } + } + } + RegistrationType.TAN -> { + SubmissionDeletionWarningFragmentDirections + .actionSubmissionDeletionFragmentToSubmissionTestResultNoConsentFragment(getTestType()) + .run { routeToScreen.postValue(this) } + } } } - fun getTestType(): CoronaTest.Type { - return coronaTestQrCode?.type ?: return CoronaTest.Type.PCR - } + data class RegistrationState( + val isFetching: Boolean = false, + val coronaTest: CoronaTest? = null, + ) sealed class RegistrationType { object TAN : RegistrationType() diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/QrCodeRegistrationStateProcessor.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/QrCodeRegistrationStateProcessor.kt index 0328165d7440c5ef89be43e0a50c0ace31fcafc5..e0e8fd0336cfa0758c00daa7c024f0696b7c08ce 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/QrCodeRegistrationStateProcessor.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/QrCodeRegistrationStateProcessor.kt @@ -3,10 +3,8 @@ package de.rki.coronawarnapp.ui.submission.qrcode import androidx.lifecycle.MutableLiveData import de.rki.coronawarnapp.coronatest.qrcode.CoronaTestQRCode import de.rki.coronawarnapp.coronatest.qrcode.InvalidQRCodeException -import de.rki.coronawarnapp.coronatest.server.CoronaTestResult import de.rki.coronawarnapp.coronatest.type.CoronaTest import de.rki.coronawarnapp.exception.ExceptionCategory -import de.rki.coronawarnapp.exception.TransactionException import de.rki.coronawarnapp.exception.http.CwaWebException import de.rki.coronawarnapp.exception.reporting.report import de.rki.coronawarnapp.submission.SubmissionRepository @@ -45,13 +43,6 @@ class QrCodeRegistrationStateProcessor @Inject constructor( } catch (err: CwaWebException) { registrationState.postValue(RegistrationState(ApiRequestState.FAILED)) registrationError.postValue(err) - } catch (err: TransactionException) { - if (err.cause is CwaWebException) { - registrationError.postValue(err.cause) - } else { - err.report(ExceptionCategory.INTERNAL) - } - registrationState.postValue(RegistrationState(ApiRequestState.FAILED)) } catch (err: InvalidQRCodeException) { registrationState.postValue(RegistrationState(ApiRequestState.FAILED)) Timber.d("deregisterTestFromDevice()") @@ -63,7 +54,7 @@ class QrCodeRegistrationStateProcessor @Inject constructor( } private fun checkTestResult(request: CoronaTestQRCode, test: CoronaTest) { - if (test.testResult == CoronaTestResult.PCR_REDEEMED) { + if (test.isFinal) { throw InvalidQRCodeException("CoronaTestResult already redeemed ${request.registrationIdentifier}") } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanViewModel.kt index de7b107fc1a7de7c54e045733ad2374e48083bf6..f92627014da54b10669180614e0d2f6847fa5ad1 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/tan/SubmissionTanViewModel.kt @@ -7,7 +7,6 @@ import dagger.assisted.AssistedInject import de.rki.coronawarnapp.coronatest.tan.CoronaTestTAN import de.rki.coronawarnapp.coronatest.type.CoronaTest import de.rki.coronawarnapp.exception.ExceptionCategory -import de.rki.coronawarnapp.exception.TransactionException import de.rki.coronawarnapp.exception.http.CwaWebException import de.rki.coronawarnapp.exception.reporting.report import de.rki.coronawarnapp.submission.SubmissionRepository @@ -79,13 +78,6 @@ class SubmissionTanViewModel @AssistedInject constructor( } catch (err: CwaWebException) { registrationState.postValue(ApiRequestState.FAILED) registrationError.postValue(err) - } catch (err: TransactionException) { - if (err.cause is CwaWebException) { - registrationError.postValue(err.cause) - } else { - err.report(ExceptionCategory.INTERNAL) - } - registrationState.postValue(ApiRequestState.FAILED) } catch (err: Exception) { registrationState.postValue(ApiRequestState.FAILED) err.report(ExceptionCategory.INTERNAL) diff --git a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml index d48804ccba58ce2abd52de0b7ad0e7a1e526a0ee..b5478d44e7bb256e18d7cc6734c67a130f638784 100644 --- a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml +++ b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml @@ -728,8 +728,8 @@ app:nullable="true" /> <action android:id="@+id/action_submissionDeletionWarningFragment_to_submissionDispatcherFragment" - app:popUpTo="@id/submissionQRCodeScanFragment" - app:popUpToInclusive="true" /> + app:popUpTo="@id/submissionDispatcherFragment" + app:popUpToInclusive="false" /> <action android:id="@+id/action_submissionDeletionFragment_to_submissionTestResultNoConsentFragment" app:destination="@id/submissionTestResultNoConsentFragment" diff --git a/Corona-Warn-App/src/main/res/values-de/antigen_strings.xml b/Corona-Warn-App/src/main/res/values-de/antigen_strings.xml index ef5e088f16b90a5691fadae4c21bf406caf926a0..49d66f58fa58b874a8b08a65c0bdee131bc06853 100644 --- a/Corona-Warn-App/src/main/res/values-de/antigen_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/antigen_strings.xml @@ -182,7 +182,7 @@ <!-- XTXT: Create RAT profile onboarding privacy --> <string name="rat_profile_onboarding_privacy">Ausführliche Informationen zur Datenverarbeitung und Ihrem Einverständnis.</string> <!-- XTXT: Create RAT Qr code profile description--> - <string name="rat_qr_code_profile_description">Bitte zeigen Sie diesen QR-Code an der Teststelle vor, um Ihre persönlichen Daten schnell erfassen zu lassen. Bitte halten zusätzlich Sie Ihren Personalausweis bereit.</string> + <string name="rat_qr_code_profile_description">Bitte zeigen Sie diesen QR-Code an der Teststelle vor, um Ihre persönlichen Daten schnell erfassen zu lassen. Bitte halten Sie zusätzlich Ihren Personalausweis bereit.</string> <!-- XTXT: Create RAT Qr code profile birth date--> <string name="rat_qr_code_profile_birth_date">geboren %1$s</string> <!-- XBUT: Create RAT Qr code profile next button--> diff --git a/Corona-Warn-App/src/main/res/values-de/legal_strings.xml b/Corona-Warn-App/src/main/res/values-de/legal_strings.xml index 890426923a65f9ad821c8327e26950bb89810963..f91b79b602d35e138c8f017bfd9fce92c1be117b 100644 --- a/Corona-Warn-App/src/main/res/values-de/legal_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/legal_strings.xml @@ -99,7 +99,7 @@ <!-- YTXT: Second bullet point for debug upload screen privacy card --> <string name="debug_log_privacy_card_container_section_two">"Auf den Fehlerbericht haben zunächst nur Sie Zugriff. Sie können im Anschluss entscheiden, ob Sie den Fehlerbericht an den technischen Support senden, ob Sie den Fehlerbericht zunächst auf Ihrem Smartphone speichern oder die Aufzeichnung stoppen und löschen wollen. Wenn Sie den Fehlerbericht zunächst lokal speichern, haben Sie die Möglichkeit, sich den Fehlerbericht selbst anzuschauen, bevor Sie diesen an den Support übermitteln."</string> <!-- YTXT: Third bullet point for debug upload screen privacy card --> - <string name="debug_log_privacy_card_container_section_three">"Der Fehlerbericht enthält sensible Informationen, zum Beispiel Angaben über Ihr Testergebnis oder das für Sie ermittelte Ansteckungsrisiko. Er enthält keine Informationen über die QR-Codes, die Sie bei der Testregistrierung verwendet haben, über Angaben, die Sie im Kontakt-Tagebuch erfasste haben oder Angaben zu Ihrer Identität."</string> + <string name="debug_log_privacy_card_container_section_three">"Der Fehlerbericht enthält sensible Informationen, zum Beispiel Angaben über Ihr Testergebnis oder das für Sie ermittelte Ansteckungsrisiko. Er enthält keine Informationen über die QR-Codes, die Sie bei der Testregistrierung verwendet haben, über Angaben, die Sie im Kontakt-Tagebuch erfasst haben oder Angaben zu Ihrer Identität."</string> <!-- YTXT: Fourth bullet point for debug upload screen privacy card --> <string name="debug_log_privacy_card_container_section_four">"Wir empfehlen die Fehlerberichte nicht zu veröffentlichen und nicht per E-Mail zu versenden."</string> <!-- YTXT: Fifth bullet point for debug upload screen privacy card --> @@ -112,7 +112,8 @@ <!-- YTXT: First bullet point for Bugreporting share log Privacy Card --> <string name="debugging_debuglog_share_privacy_card_bullet_point_1">"Der von Ihnen erstellte Fehlerbericht wird zu Zwecken der Fehleranalyse an das RKI übermittelt. Das RKI wird den Fehlerbericht auswerten, um mögliche Ursachen der in Ihrer App auftretenden Fehler erkennen und beheben zu können. Wenn Sie dem technischen Support die Fehlerbericht-ID mitteilen, kann das RKI den Fehlerbericht Ihrer Person zuordnen."</string> <!-- YTXT: Second bullet point for Bugreporting share log Privacy Card --> - <string name="debugging_debuglog_share_privacy_card_bullet_point_2">"Bevor der Bericht an das RKI übersendet wird, wird die Echtheit Ihrer App einmalig geprüft. Dazu wird durch Ihr Smartphone eine eindeutige Kennung erzeugt und an Apple in die USA oder andere Drittländer übermittelt, damit Apple die Echtheit Ihrer App gegenüber dem RKI bestätigen kann. Die Kennung enthält Informationen über die Version Ihres Smartphones und der App. Apple kann damit möglicherweise auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat. Weitere Angaben aus der App oder dem Fehlerbericht erhält Apple hierbei nicht."</string> + <string name="debugging_debuglog_share_privacy_card_bullet_point_2">"Bevor der Bericht an das RKI übersendet wird, wird die Echtheit Ihrer App einmalig geprüft. Dazu wird durch Ihr Smartphone eine eindeutige Kennung erzeugt und an Google in die USA oder andere Drittländer übermittelt, damit Google die Echtheit Ihrer App gegenüber dem RKI bestätigen kann. Die Kennung enthält Informationen über die Version Ihres Smartphones und der App. Google kann damit möglicherweise auf Ihre Identität schließen und nachvollziehen, dass die Echtheitsprüfung Ihres Smartphones stattgefunden hat. Weitere Angaben aus der App oder dem Fehlerbericht erhält Google hierbei nicht. +"</string> <!-- YTXT: Second body section for Bugreporting share log Privacy Card --> <string name="debugging_debuglog_share_privacy_card_body_2">"Sollten Sie dem technischen Support nach der Ãœbersendung Ihre Fehlerbericht-ID mitgeteilt haben, können Sie auch jederzeit die Löschung der weiteren mitgeteilten Informationen, der Fehlerbericht-ID und des Fehlerberichtes verlangen. Andernfalls wird der Fehlerbericht automatisch nach 14 Tagen gelöscht."</string> diff --git a/Corona-Warn-App/src/main/res/values-de/strings.xml b/Corona-Warn-App/src/main/res/values-de/strings.xml index 74477dbe931510051d6b68ba3f294a7b5090e619..2aa31ae7ce1146fa12208128971837c8b737a842 100644 --- a/Corona-Warn-App/src/main/res/values-de/strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/strings.xml @@ -104,7 +104,7 @@ <!-- XHED: risk card - risk check failed headline, no internet connection --> <string name="risk_card_check_failed_no_internet_headline">"Risiko-Ãœberprüfung fehlgeschlagen"</string> <!-- XTXT: risk card - risk check failed, please check your internet connection --> - <string name="risk_card_check_failed_no_internet_body">"Der Abgleich der Zufall-IDs mit dem Server ist fehlgeschlagen. Sie können den Abgleich manuell neu starten."</string> + <string name="risk_card_check_failed_no_internet_body">"Der Abgleich der Zufalls-IDs mit dem Server ist fehlgeschlagen. Sie können den Abgleich manuell neu starten."</string> <!-- XTXT: risk card - risk check failed, restart button --> <string name="risk_card_check_failed_no_internet_restart_button">"Erneut starten"</string> @@ -858,9 +858,9 @@ <!-- XTXT: Debug Log screen increased risk level link label - HAS TO MATCH the link text above --> <string name="debugging_debuglog_intro_explanation_section_two_link_label">"FAQ zu den Fehlerberichten"</string> <!-- XTXT: Explains user about about debug log: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details --> - <string name="debugging_debuglog_intro_explanation_section_two_faq_link">"https://www.coronawarn.app/en/faq/#error_log"</string> + <string name="debugging_debuglog_intro_explanation_section_two_faq_link">"https://www.coronawarn.app/de/faq/#error_log"</string> <!-- YTXT: Title of ID History --> - <string name="debugging_debuglog_id_history_title">"ID History"</string> + <string name="debugging_debuglog_id_history_title">"ID Historie"</string> <!-- YTXT: Description of ID History --> <string name="debugging_debuglog_id_history_body">"IDs der bisher geteilten Fehleranalysen"</string> <!-- YTXT: Warning regarding downsides of recording a log file --> @@ -1175,7 +1175,7 @@ <!-- YTXT: Body text for TAN code dispatcher option --> <string name="submission_dispatcher_tan_code_card_text">"Ihnen liegt eine TAN für Ihren PCR-Test vor? Weiter zur TAN-Eingabe, um andere zu warnen. "</string> <!-- YTXT: Dispatcher text for TELE-TAN option --> - <string name="submission_dispatcher_card_tan_tele">"TAN für PCR-Test anfragen?"</string> + <string name="submission_dispatcher_card_tan_tele">"TAN für PCR-Test anfragen"</string> <!-- YTXT: Body text for TELE_TAN dispatcher option --> <string name="submission_dispatcher_tan_tele_card_text">"Rufen Sie uns an und erhalten Sie eine TAN für Ihren PCR-Test."</string> <!-- XACT: Dispatcher Tan page title --> diff --git a/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml b/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml index 4537345aefc0db41d817d76dfa9edbff49dca3f1..1d5995b81ef8561a6edeb81b260ef6bad78e0c44 100644 --- a/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml +++ b/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml @@ -110,7 +110,7 @@ <!-- YTXT: First bullet point for Bugreporting share log Privacy Card --> <string name="debugging_debuglog_share_privacy_card_bullet_point_1">"Tarafınızdan oluÅŸturulan hata raporu, hata analizinin gerçekleÅŸtirilmesi için RKI’ye aktarılır. RKI, Uygulamanızda ortaya çıkan hataların olası nedenlerini belirlemek ve bunları gidermek için hata raporunu inceleyecektir. Hata raporu kimlik numarasını teknik destek birimine saÄŸladığınızda, RKI bu hata raporunu size kiÅŸisel olarak atayabilir."</string> <!-- YTXT: Second bullet point for Bugreporting share log Privacy Card --> - <string name="debugging_debuglog_share_privacy_card_bullet_point_2">"Rapor RKI’ye gönderilmeden önce, Uygulamanızın orijinal olduÄŸu bir kez kontrol edilir. Bunun için, akıllı telefonunuz tarafından benzersiz bir kimlik kodu oluÅŸturulur ve Apple’ın Uygulamanızın orijinal ürün olduÄŸunu RKI’ye doÄŸrulaması için ABD veya diÄŸer bir üçüncü ülkedeki Apple’a aktarılır. Bu kimlik kodu, akıllı telefonunuzun sürümü ve Uygulama hakkında veriler içerir. Apple, böylece kim olduÄŸunuzu ortaya çıkarabilir ve akıllı telefonunuzun orijinallik kontrolünün yapıldığını anlayabilir. Apple, Uygulamadan daha fazla bilgi almaz."</string> + <string name="debugging_debuglog_share_privacy_card_bullet_point_2">"Rapor RKI’ye gönderilmeden önce, Uygulamanızın orijinal olduÄŸu bir kez kontrol edilir. Bunun için, akıllı telefonunuz tarafından benzersiz bir kimlik kodu oluÅŸturulur ve Google’ın Uygulamanızın orijinal ürün olduÄŸunu RKI’ye doÄŸrulaması için ABD veya diÄŸer bir üçüncü ülkedeki Google’a aktarılır. Bu kimlik kodu, akıllı telefonunuzun sürümü ve Uygulama hakkında veriler içerir. Google, böylece kim olduÄŸunuzu ortaya çıkarabilir ve akıllı telefonunuzun orijinallik kontrolünün yapıldığını anlayabilir. Google, Uygulamadan daha fazla bilgi almaz."</string> <!-- YTXT: Second body section for Bugreporting share log Privacy Card --> <string name="debugging_debuglog_share_privacy_card_body_2">"Gönderimden sonra hata raporu kimlik numarasını teknik desteÄŸe bildirirseniz, saÄŸlanan diÄŸer bilgilerin, hata raporu kimliÄŸinin ve hata raporunun silinmesini istediÄŸiniz zaman talep edebilirsiniz. Aksi halde bu hata raporu 14 gün sonra otomatik olarak silinecektir."</string> diff --git a/Corona-Warn-App/src/main/res/values/legal_strings.xml b/Corona-Warn-App/src/main/res/values/legal_strings.xml index 17cccce9fc420f7f1b34faadfd63d0b14007b5c7..b31a9c1fcf12ccafa25753e156e361a084b48c97 100644 --- a/Corona-Warn-App/src/main/res/values/legal_strings.xml +++ b/Corona-Warn-App/src/main/res/values/legal_strings.xml @@ -111,7 +111,7 @@ <!-- YTXT: First bullet point for Bugreporting share log Privacy Card --> <string name="debugging_debuglog_share_privacy_card_bullet_point_1" translatable="false">"The error report you create will be sent to the RKI for error analysis purposes. The RKI will analyse the error report in order to be able to identify and fix possible causes of the errors that occur in your app. If you provide the error report ID to the technical support team, then the RKI will be able to associate the error report with you personally."</string> <!-- YTXT: Second bullet point for Bugreporting share log Privacy Card --> - <string name="debugging_debuglog_share_privacy_card_bullet_point_2" translatable="false">"Before the report is sent to the RKI, the authenticity of your app is checked once. For this purpose, a unique identifier is generated by your smartphone and transmitted to Apple in the US or other third countries, so that Apple can confirm the authenticity of your app to the RKI. The identifier contains information about the version of your smartphone and the app. Apple may thus be able to infer your identity and learn that your smartphone has been authenticated. Apple will not receive any further information from the app or the error report during this process."</string> + <string name="debugging_debuglog_share_privacy_card_bullet_point_2" translatable="false">"Before the report is sent to the RKI, the authenticity of your app is checked once. For this purpose, a unique identifier is generated by your smartphone and transmitted to Google in the US or other third countries, so that Google can confirm the authenticity of your app to the RKI. The identifier contains information about the version of your smartphone and the app. Google may thus be able to infer your identity and learn that your smartphone has been authenticated. Google will not receive any further information from the app or the error report during this process."</string> <!-- YTXT: Second body section for Bugreporting share log Privacy Card --> <string name="debugging_debuglog_share_privacy_card_body_2" translatable="false">"If, after sending the report, you have provided your error report ID to the technical support team, then you may also request at any time that the other information you provided, the error report ID, and the error report itself be erased. Otherwise, the error report will be automatically erased after 14 days."</string> diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRCoronaTestTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRCoronaTestTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..28353d256d4404c2be68555cb70c25f319d97b0b --- /dev/null +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/pcr/PCRCoronaTestTest.kt @@ -0,0 +1,25 @@ +package de.rki.coronawarnapp.coronatest.type.pcr + +import de.rki.coronawarnapp.coronatest.server.CoronaTestResult +import io.kotest.matchers.shouldBe +import org.joda.time.Instant +import org.junit.jupiter.api.Test +import testhelpers.BaseTest + +class PCRCoronaTestTest : BaseTest() { + + @Test + fun `a test is final if it reaches the REDEEMED state`() { + val instance = PCRCoronaTest( + identifier = "identifier", + lastUpdatedAt = Instant.EPOCH, + registeredAt = Instant.EPOCH, + registrationToken = "token", + testResult = CoronaTestResult.PCR_REDEEMED, + ) + + instance.isFinal shouldBe true + instance.copy(testResult = CoronaTestResult.PCR_POSITIVE).isFinal shouldBe false + instance.copy(testResult = CoronaTestResult.RAT_POSITIVE).isFinal shouldBe false + } +} diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RACoronaTestTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RACoronaTestTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..d5f58239c5a8fdd2f666b212bba3593b3044917b --- /dev/null +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/coronatest/type/rapidantigen/RACoronaTestTest.kt @@ -0,0 +1,26 @@ +package de.rki.coronawarnapp.coronatest.type.rapidantigen + +import de.rki.coronawarnapp.coronatest.server.CoronaTestResult +import io.kotest.matchers.shouldBe +import org.joda.time.Instant +import org.junit.jupiter.api.Test +import testhelpers.BaseTest + +class RACoronaTestTest : BaseTest() { + + @Test + fun `a test is final if it reaches the REDEEMED state`() { + val instance = RACoronaTest( + identifier = "identifier", + lastUpdatedAt = Instant.EPOCH, + registeredAt = Instant.EPOCH, + registrationToken = "token", + testResult = CoronaTestResult.RAT_REDEEMED, + testedAt = Instant.EPOCH, + ) + + instance.isFinal shouldBe true + instance.copy(testResult = CoronaTestResult.RAT_POSITIVE).isFinal shouldBe false + instance.copy(testResult = CoronaTestResult.PCR_REDEEMED).isFinal shouldBe false + } +} diff --git a/README.md b/README.md index d87a39c44dabe90de7707a91137f5df9ba8af0a5..f4c350017a3533b1e04a1508b1f52c91b692efba 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,6 @@ </p> <p align="center"> - <a href="#development">Development</a> • <a href="#architecture--documentation">Documentation</a> • <a href="#how-to-contribute">Contribute</a> • <a href="#support--feedback">Support</a> • @@ -32,15 +31,6 @@ The goal of this project is to develop the official Corona-Warn-App for Germany based on the exposure notification API from [Apple](https://www.apple.com/covid19/contacttracing/) and [Google](https://www.google.com/covid19/exposurenotifications/). The apps (for both iOS and Android) use Bluetooth technology to exchange anonymous encrypted data with other mobile phones (on which the app is also installed) in the vicinity of an app user's phone. The data is stored locally on each user's device, preventing authorities or other parties from accessing or controlling the data. This repository contains the **native Android implementation** of the Corona-Warn-App. **Visit our [FAQ page](https://www.coronawarn.app/en/faq/) for more information and common issues** -## Development - -* [Home](https://github.com/corona-warn-app/cwa-app-android/wiki) -* [1 Setup](https://github.com/corona-warn-app/cwa-app-android/wiki/1-Setup) -* [2 Backend](https://github.com/corona-warn-app/cwa-app-android/wiki/2-Backend) -* [3 UI](https://github.com/corona-warn-app/cwa-app-android/wiki/3-UI) -* [4 Exposure Notification Google API](https://github.com/corona-warn-app/cwa-app-android/wiki/4-Google-Exposure-Notifications-API) -* [5 Packages](https://github.com/corona-warn-app/cwa-app-android/wiki/5-Packages) - ## Known Issues * The Exposure Notification API is going to block you from successfully testing the Application unless you are whitelisted inside GMS; **Shoutout to @pocmo for working on a demo mode to test unreleased app versions in advance without whitelisting (issue [#321](https://github.com/corona-warn-app/cwa-app-android/issues/321))**, if you want to contribute you can reach out [here](https://github.com/pocmo/cwa-app-android) for the time being - thank you! diff --git a/gradle.properties b/gradle.properties index ec9858da2ec70c1b5288fe854f3de5abc888d0d2..f050c033923f4b2a8b12287e6db84bfabf4ff347 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,4 +20,4 @@ org.gradle.dependency.verification.console=verbose VERSION_MAJOR=2 VERSION_MINOR=3 VERSION_PATCH=0 -VERSION_BUILD=5 +VERSION_BUILD=0