COVIDSafe code from version 1.0.17 (#1)

This commit is contained in:
COVIDSafe Support 2020-05-15 18:19:59 +10:00 committed by GitHub
parent b827cf3cce
commit 696e4ed498
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
31 changed files with 205 additions and 68 deletions

View file

@ -1,5 +1,7 @@
# COVIDSafe app # COVIDSafe app
# Please report any security vulnerabilities using the details from [https://covidsafe.gov.au/.well-known/security.txt](https://covidsafe.gov.au/.well-known/security.txt)
# [Terms and Conditions for access to COVIDSafe App code](https://github.com/AU-COVIDSafe/mobile-android/blob/master/LICENSE.md) # [Terms and Conditions for access to COVIDSafe App code](https://github.com/AU-COVIDSafe/mobile-android/blob/master/LICENSE.md)
By accessing the App Code I accept and agree to the following terms: By accessing the App Code I accept and agree to the following terms:

View file

@ -36,8 +36,8 @@ android {
resValue "string", "build_config_package", "au.gov.health.covidsafe" resValue "string", "build_config_package", "au.gov.health.covidsafe"
minSdkVersion 23 minSdkVersion 23
targetSdkVersion 29 targetSdkVersion 29
versionCode 16 versionCode 17
versionName "1.0.16" versionName "1.0.17"
buildConfigField "String", "GITHASH", "\"${getGitHash()}\"" buildConfigField "String", "GITHASH", "\"${getGitHash()}\""
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@ -90,6 +90,7 @@ android {
buildConfigField "boolean", "ENABLE_DEBUG_SCREEN", "true" buildConfigField "boolean", "ENABLE_DEBUG_SCREEN", "true"
buildConfigField "String", "END_POINT_PREFIX", TEST_END_POINT_PREFIX buildConfigField "String", "END_POINT_PREFIX", TEST_END_POINT_PREFIX
buildConfigField "String", "BASE_URL", TEST_BASE_URL buildConfigField "String", "BASE_URL", TEST_BASE_URL
buildConfigField "String", "IOS_BACKGROUND_UUID", DEBUG_BACKGROUND_IOS_SERVICE_UUID
String ssid = STAGING_SERVICE_UUID String ssid = STAGING_SERVICE_UUID
@ -104,6 +105,8 @@ android {
buildConfigField "boolean", "ENABLE_DEBUG_SCREEN", "true" buildConfigField "boolean", "ENABLE_DEBUG_SCREEN", "true"
buildConfigField "String", "END_POINT_PREFIX", STAGING_END_POINT_PREFIX buildConfigField "String", "END_POINT_PREFIX", STAGING_END_POINT_PREFIX
buildConfigField "String", "BASE_URL", STAGING_BASE_URL buildConfigField "String", "BASE_URL", STAGING_BASE_URL
buildConfigField "String", "IOS_BACKGROUND_UUID", STAGING_BACKGROUND_IOS_SERVICE_UUID
// Retrieve bluetooth ssid from staging's strings.xml // Retrieve bluetooth ssid from staging's strings.xml
@ -126,6 +129,8 @@ android {
buildConfigField "String", "BLE_SSID", PRODUCTION_SERVICE_UUID buildConfigField "String", "BLE_SSID", PRODUCTION_SERVICE_UUID
buildConfigField "String", "END_POINT_PREFIX", PRODUCTION_END_POINT_PREFIX buildConfigField "String", "END_POINT_PREFIX", PRODUCTION_END_POINT_PREFIX
buildConfigField "String", "BASE_URL", PROD_BASE_URL buildConfigField "String", "BASE_URL", PROD_BASE_URL
buildConfigField "String", "IOS_BACKGROUND_UUID", PRODUCTION_BACKGROUND_IOS_SERVICE_UUID
debuggable false debuggable false
jniDebuggable false jniDebuggable false

View file

@ -89,14 +89,12 @@ class BLEAdvertiser constructor(serviceUUID: String) {
CentralLog.d(TAG, "Unique string: $finalString") CentralLog.d(TAG, "Unique string: $finalString")
val serviceDataByteArray = finalString.toByteArray() val serviceDataByteArray = finalString.toByteArray()
if (data == null) {
data = AdvertiseData.Builder() data = AdvertiseData.Builder()
.setIncludeDeviceName(false) .setIncludeDeviceName(false)
.setIncludeTxPowerLevel(true) .setIncludeTxPowerLevel(true)
.addServiceUuid(pUuid) .addServiceUuid(pUuid)
.addManufacturerData(1023, serviceDataByteArray) .addManufacturerData(1023, serviceDataByteArray)
.build() .build()
}
try { try {
CentralLog.d(TAG, "Start advertising") CentralLog.d(TAG, "Start advertising")

View file

@ -7,7 +7,12 @@ import android.bluetooth.le.ScanFilter
import android.bluetooth.le.ScanSettings import android.bluetooth.le.ScanSettings
import android.content.Context import android.content.Context
import android.os.ParcelUuid import android.os.ParcelUuid
import android.util.Base64
import android.util.Base64.decode
import au.gov.health.covidsafe.BuildConfig
import au.gov.health.covidsafe.Utils import au.gov.health.covidsafe.Utils
import au.gov.health.covidsafe.bluetooth.BLEScanner.FilterConstant.APPLE_MANUFACTURER_ID
import au.gov.health.covidsafe.bluetooth.BLEScanner.FilterConstant.BACKGROUND_IOS_SERVICE_UUID
import au.gov.health.covidsafe.logging.CentralLog import au.gov.health.covidsafe.logging.CentralLog
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
@ -15,6 +20,11 @@ import kotlin.properties.Delegates
class BLEScanner constructor(context: Context, uuid: String, reportDelay: Long) { class BLEScanner constructor(context: Context, uuid: String, reportDelay: Long) {
object FilterConstant {
const val APPLE_MANUFACTURER_ID = 76
val BACKGROUND_IOS_SERVICE_UUID: ByteArray = decode(BuildConfig.IOS_BACKGROUND_UUID, Base64.DEFAULT)
}
private var serviceUUID: String by Delegates.notNull() private var serviceUUID: String by Delegates.notNull()
private var context: Context by Delegates.notNull() private var context: Context by Delegates.notNull()
private var scanCallback: ScanCallback? = null private var scanCallback: ScanCallback? = null
@ -32,12 +42,21 @@ class BLEScanner constructor(context: Context, uuid: String, reportDelay: Long)
} }
fun startScan(scanCallback: ScanCallback) { fun startScan(scanCallback: ScanCallback) {
val filter = ScanFilter.Builder() val serviceUUIDFilter = ScanFilter.Builder()
.setServiceUuid(ParcelUuid(UUID.fromString(serviceUUID))) .setServiceUuid(ParcelUuid(UUID.fromString(serviceUUID)))
.build() .build()
val backgroundedIPhoneFilter = ScanFilter.Builder()
.setServiceUuid(null)
.setManufacturerData(
APPLE_MANUFACTURER_ID,
BACKGROUND_IOS_SERVICE_UUID
)
.build()
val filters: ArrayList<ScanFilter> = ArrayList() val filters: ArrayList<ScanFilter> = ArrayList()
filters.add(filter) filters.add(serviceUUIDFilter)
filters.add(backgroundedIPhoneFilter)
val settings = ScanSettings.Builder() val settings = ScanSettings.Builder()
.setReportDelay(reportDelay) .setReportDelay(reportDelay)

View file

@ -42,6 +42,7 @@ class GattServer constructor(val context: Context, serviceUUIDString: String) {
BluetoothProfile.STATE_DISCONNECTED -> { BluetoothProfile.STATE_DISCONNECTED -> {
CentralLog.i(TAG, "${device?.address} Disconnected from local GATT server.") CentralLog.i(TAG, "${device?.address} Disconnected from local GATT server.")
readPayloadMap.remove(device?.address)
device?.let { device?.let {
Utils.broadcastDeviceDisconnected(context, device) Utils.broadcastDeviceDisconnected(context, device)
} }

View file

@ -26,14 +26,10 @@ class NotificationTemplates {
) )
val builder = NotificationCompat.Builder(context, channel) val builder = NotificationCompat.Builder(context, channel)
.setContentTitle(context.getText(R.string.service_ok_title))
.setContentText(context.getText(R.string.service_ok_body))
.setOngoing(true) .setOngoing(true)
.setPriority(NotificationCompat.PRIORITY_LOW) .setPriority(NotificationCompat.PRIORITY_LOW)
.setSmallIcon(R.drawable.ic_notification_icon) .setSmallIcon(R.drawable.ic_notification_icon)
.setContentIntent(activityPendingIntent) .setContentIntent(activityPendingIntent)
.setTicker(context.getText(R.string.service_ok_body))
.setStyle(NotificationCompat.BigTextStyle().bigText(context.getText(R.string.service_ok_body)))
.setWhen(System.currentTimeMillis()) .setWhen(System.currentTimeMillis())
.setSound(null) .setSound(null)
.setVibrate(null) .setVibrate(null)

View file

@ -99,6 +99,9 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks {
home_setup_complete_app.setOnClickListener { home_setup_complete_app.setOnClickListener {
goToCovidApp() goToCovidApp()
} }
help_topics_link.setOnClickListener {
findNavController().navigate(HomeFragmentDirections.actionHomeFragmentToHelpFragment())
}
if (!mIsBroadcastListenerRegistered) { if (!mIsBroadcastListenerRegistered) {
registerBroadcast() registerBroadcast()
@ -115,6 +118,7 @@ class HomeFragment : BaseFragment(), EasyPermissions.PermissionCallbacks {
home_setup_complete_share.setOnClickListener(null) home_setup_complete_share.setOnClickListener(null)
home_setup_complete_news.setOnClickListener(null) home_setup_complete_news.setOnClickListener(null)
home_setup_complete_app.setOnClickListener(null) home_setup_complete_app.setOnClickListener(null)
help_topics_link.setOnClickListener(null)
activity?.let { activity -> activity?.let { activity ->
if (mIsBroadcastListenerRegistered) { if (mIsBroadcastListenerRegistered) {
activity.unregisterReceiver(mBroadcastListener) activity.unregisterReceiver(mBroadcastListener)

View file

@ -5,6 +5,7 @@ import android.text.method.LinkMovementMethod
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.accessibility.AccessibilityEvent
import au.gov.health.covidsafe.R import au.gov.health.covidsafe.R
import au.gov.health.covidsafe.ui.PagerChildFragment import au.gov.health.covidsafe.ui.PagerChildFragment
import au.gov.health.covidsafe.ui.UploadButtonLayout import au.gov.health.covidsafe.ui.UploadButtonLayout
@ -24,6 +25,13 @@ class DataPrivacyFragment : PagerChildFragment() {
view.data_privacy_content.movementMethod = LinkMovementMethod.getInstance() view.data_privacy_content.movementMethod = LinkMovementMethod.getInstance()
} }
override fun onResume() {
super.onResume()
// set accessibility focus to the title "Registration and privacy"
data_privacy_headline.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
}
override fun getUploadButtonLayout() = UploadButtonLayout.ContinueLayout(R.string.data_privacy_button) { override fun getUploadButtonLayout() = UploadButtonLayout.ContinueLayout(R.string.data_privacy_button) {
navigateTo(DataPrivacyFragmentDirections.actionDataPrivacyToRegistrationConsentFragment().actionId) navigateTo(DataPrivacyFragmentDirections.actionDataPrivacyToRegistrationConsentFragment().actionId)
} }

View file

@ -5,6 +5,7 @@ import android.text.method.LinkMovementMethod
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.accessibility.AccessibilityEvent
import au.gov.health.covidsafe.R import au.gov.health.covidsafe.R
import au.gov.health.covidsafe.ui.PagerChildFragment import au.gov.health.covidsafe.ui.PagerChildFragment
import au.gov.health.covidsafe.ui.UploadButtonLayout import au.gov.health.covidsafe.ui.UploadButtonLayout
@ -24,6 +25,13 @@ class HowItWorksFragment : PagerChildFragment() {
view.how_it_works_content.movementMethod = LinkMovementMethod.getInstance() view.how_it_works_content.movementMethod = LinkMovementMethod.getInstance()
} }
override fun onResume() {
super.onResume()
// set accessibility focus to the title "How COVIDSafe works"
how_it_works_headline.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
}
override fun getUploadButtonLayout() = UploadButtonLayout.ContinueLayout(R.string.how_it_works_button) { override fun getUploadButtonLayout() = UploadButtonLayout.ContinueLayout(R.string.how_it_works_button) {
navigateTo(R.id.action_howItWorksFragment_to_dataPrivacy) navigateTo(R.id.action_howItWorksFragment_to_dataPrivacy)
} }

View file

@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.accessibility.AccessibilityEvent
import au.gov.health.covidsafe.R import au.gov.health.covidsafe.R
import au.gov.health.covidsafe.ui.PagerChildFragment import au.gov.health.covidsafe.ui.PagerChildFragment
import au.gov.health.covidsafe.ui.UploadButtonLayout import au.gov.health.covidsafe.ui.UploadButtonLayout
@ -21,6 +22,13 @@ class IntroductionFragment : PagerChildFragment() {
navigateTo(R.id.action_introFragment_to_howItWorksFragment) navigateTo(R.id.action_introFragment_to_howItWorksFragment)
} }
override fun onResume() {
super.onResume()
// set accessibility focus to the title "Together we can stop ..."
intro_headline.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
}
override fun updateButtonState() { override fun updateButtonState() {
enableContinueButton() enableContinueButton()
} }

View file

@ -1,16 +1,14 @@
package au.gov.health.covidsafe.ui.onboarding.fragment.personal package au.gov.health.covidsafe.ui.onboarding.fragment.personal
import android.app.Activity
import android.os.Bundle import android.os.Bundle
import android.text.Editable import android.text.Editable
import android.text.TextWatcher import android.text.TextWatcher
import android.text.method.LinkMovementMethod
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.View.GONE import android.view.View.GONE
import android.view.View.VISIBLE import android.view.View.VISIBLE
import android.view.ViewGroup import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager import android.view.accessibility.AccessibilityEvent
import android.widget.NumberPicker import android.widget.NumberPicker
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.os.bundleOf import androidx.core.os.bundleOf
@ -69,6 +67,8 @@ class PersonalDetailsFragment : PagerChildFragment() {
} }
personal_details_age.text = ageSelected?.second personal_details_age.text = ageSelected?.second
// set accessibility focus to the title "Enter your details"
personal_details_headline.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
} }
override fun onPause() { override fun onPause() {

View file

@ -1,16 +1,17 @@
package au.gov.health.covidsafe.ui.onboarding.fragment.registrationcontent package au.gov.health.covidsafe.ui.onboarding.fragment.registrationconsent
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.view.accessibility.AccessibilityEvent
import au.gov.health.covidsafe.R import au.gov.health.covidsafe.R
import au.gov.health.covidsafe.ui.PagerChildFragment import au.gov.health.covidsafe.ui.PagerChildFragment
import au.gov.health.covidsafe.ui.PagerContainer import au.gov.health.covidsafe.ui.PagerContainer
import au.gov.health.covidsafe.ui.UploadButtonLayout import au.gov.health.covidsafe.ui.UploadButtonLayout
import kotlinx.android.synthetic.main.fragment_registration_consent.* import kotlinx.android.synthetic.main.fragment_registration_consent.*
class RegistrationContentFragment : PagerChildFragment() { class RegistrationConsentFragment : PagerChildFragment() {
override val navigationIcon: Int? = R.drawable.ic_up override val navigationIcon: Int? = R.drawable.ic_up
override var stepProgress: Int? = null override var stepProgress: Int? = null
@ -23,6 +24,9 @@ class RegistrationContentFragment : PagerChildFragment() {
registration_consent_checkbox.setOnCheckedChangeListener { buttonView, isChecked -> registration_consent_checkbox.setOnCheckedChangeListener { buttonView, isChecked ->
updateButtonState() updateButtonState()
} }
// set accessibility focus to the title "I consent to the Australian ..."
registration_consent_text.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
} }
override fun updateButtonState() { override fun updateButtonState() {
@ -39,6 +43,6 @@ class RegistrationContentFragment : PagerChildFragment() {
} }
override fun getUploadButtonLayout() = UploadButtonLayout.ContinueLayout(R.string.registration_consent_button) { override fun getUploadButtonLayout() = UploadButtonLayout.ContinueLayout(R.string.registration_consent_button) {
navigateTo(RegistrationContentFragmentDirections.actionRegistrationConsentFragmentToPersonalDetailsFragment().actionId) navigateTo(RegistrationConsentFragmentDirections.actionRegistrationConsentFragmentToPersonalDetailsFragment().actionId)
} }
} }

View file

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="40dp"
android:height="40dp"
android:viewportWidth="40"
android:viewportHeight="40">
<path
android:pathData="M19.9998,5C11.7156,5 4.9998,11.7157 4.9998,20C4.9998,28.2842 11.7156,35 19.9998,35C28.2841,35 34.9998,28.2842 34.9998,20C34.9998,11.7157 28.2841,5 19.9998,5ZM1.6665,20C1.6665,9.8747 9.8746,1.6666 19.9998,1.6666C30.1251,1.6666 38.3332,9.8747 38.3332,20C38.3332,30.1252 30.1251,38.3333 19.9998,38.3333C9.8746,38.3333 1.6665,30.1252 1.6665,20Z"
android:fillColor="#131313"
android:fillType="evenOdd"/>
<path
android:pathData="M20.4302,13.3739C19.6544,13.2408 18.8564,13.3866 18.1778,13.7855C17.4991,14.1843 16.9835,14.8105 16.7223,15.5531C16.4168,16.4214 15.4653,16.8777 14.597,16.5722C13.7286,16.2668 13.2724,15.3153 13.5778,14.4469C14.1003,12.9618 15.1315,11.7094 16.4888,10.9117C17.8462,10.114 19.442,9.8224 20.9938,10.0885C22.5455,10.3547 23.953,11.1614 24.9669,12.3659C25.9806,13.5701 26.5355,15.0941 26.5334,16.6682C26.5326,19.2188 24.6416,20.9032 23.2912,21.8034C22.5651,22.2875 21.851,22.6434 21.3248,22.8772C21.0594,22.9952 20.8359,23.0847 20.6749,23.146C20.5942,23.1768 20.5288,23.2006 20.4812,23.2175L20.4233,23.2378L20.4049,23.2441L20.3984,23.2463L20.3958,23.2471C20.3953,23.2473 20.3937,23.2478 19.8667,21.6667L20.3937,23.2478C19.5205,23.5389 18.5766,23.067 18.2856,22.1937C17.9947,21.3211 18.4658,20.3779 19.3379,20.0861L19.3358,20.0868C19.3359,20.0868 19.3361,20.0868 19.3379,20.0861L19.3645,20.0768C19.3901,20.0677 19.4322,20.0524 19.4882,20.0311C19.6006,19.9883 19.7677,19.9215 19.971,19.8312C20.3824,19.6483 20.9182,19.3792 21.4422,19.0299C22.5915,18.2637 23.2,17.4486 23.2,16.6667L23.2,16.6642C23.2012,15.877 22.9237,15.1148 22.4168,14.5126C21.9098,13.9103 21.2061,13.507 20.4302,13.3739Z"
android:fillColor="#131313"
android:fillType="evenOdd"/>
<path
android:pathData="M18.3335,28.3333C18.3335,27.4128 19.0797,26.6666 20.0002,26.6666H20.0168C20.9373,26.6666 21.6835,27.4128 21.6835,28.3333C21.6835,29.2538 20.9373,30 20.0168,30H20.0002C19.0797,30 18.3335,29.2538 18.3335,28.3333Z"
android:fillColor="#131313"
android:fillType="evenOdd"/>
</vector>

View file

@ -14,7 +14,8 @@
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_up" /> app:navigationIcon="@drawable/ic_up"
app:navigationContentDescription="@string/navigation_back_button_content_description"/>
<fragment <fragment
android:id="@+id/fragment_nav_host" android:id="@+id/fragment_nav_host"

View file

@ -27,6 +27,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/keyline_6" android:layout_marginTop="@dimen/keyline_6"
android:text="@string/data_privacy_headline" android:text="@string/data_privacy_headline"
android:contentDescription="@string/data_privacy_headline_content_description"
android:textAppearance="?textAppearanceHeadline2" android:textAppearance="?textAppearanceHeadline2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View file

@ -17,6 +17,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="0dp" android:layout_height="0dp"
android:background="@color/lighter_green" android:background="@color/lighter_green"
android:importantForAccessibility="no"
app:layout_constraintBottom_toBottomOf="@+id/header_background_overlap" app:layout_constraintBottom_toBottomOf="@+id/header_background_overlap"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -34,6 +35,8 @@
android:layout_marginTop="@dimen/keyline_7" android:layout_marginTop="@dimen/keyline_7"
android:layout_marginRight="@dimen/keyline_4" android:layout_marginRight="@dimen/keyline_4"
android:background="?attr/selectableItemBackground" android:background="?attr/selectableItemBackground"
android:contentDescription="@string/title_help"
android:accessibilityTraversalAfter="@id/home_header_setup_complete_header"
android:src="@drawable/ic_help_outline_black" android:src="@drawable/ic_help_outline_black"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" /> app:layout_constraintTop_toTopOf="parent" />
@ -57,7 +60,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:barrierDirection="bottom" app:barrierDirection="bottom"
app:constraint_referenced_ids="push_card_view,external_links_bottom_card" /> app:constraint_referenced_ids="push_card_view, help_topics_card" />
<TextView <TextView
android:id="@+id/home_version_number" android:id="@+id/home_version_number"

View file

@ -14,8 +14,7 @@
android:id="@+id/external_links_top_card" android:id="@+id/external_links_top_card"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/keyline_4" android:layout_margin="@dimen/keyline_4"
android:layout_marginRight="@dimen/keyline_4"
app:layout_constraintTop_toBottomOf="@+id/cards_top_barrier" app:layout_constraintTop_toBottomOf="@+id/cards_top_barrier"
card_view:cardBackgroundColor="@color/white" card_view:cardBackgroundColor="@color/white"
card_view:cardCornerRadius="6dp" card_view:cardCornerRadius="6dp"
@ -32,7 +31,6 @@
android:id="@+id/home_setup_complete_share" android:id="@+id/home_setup_complete_share"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/keyline_4"
android:background="@color/white" android:background="@color/white"
android:minHeight="@dimen/external_link_height" android:minHeight="@dimen/external_link_height"
app:external_linkCard_content="@string/home_set_complete_external_link_share_content" app:external_linkCard_content="@string/home_set_complete_external_link_share_content"
@ -66,9 +64,7 @@
android:id="@+id/external_links_bottom_card" android:id="@+id/external_links_bottom_card"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/keyline_4" android:layout_margin="@dimen/keyline_4"
android:layout_marginTop="@dimen/keyline_5"
android:layout_marginRight="@dimen/keyline_4"
app:layout_constraintTop_toBottomOf="@+id/external_links_top_card" app:layout_constraintTop_toBottomOf="@+id/external_links_top_card"
card_view:cardBackgroundColor="@color/white" card_view:cardBackgroundColor="@color/white"
card_view:cardCornerRadius="6dp" card_view:cardCornerRadius="6dp"
@ -106,6 +102,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/white" android:background="@color/white"
android:minHeight="@dimen/external_link_height" android:minHeight="@dimen/external_link_height"
android:paddingTop="@dimen/keyline_0"
android:paddingBottom="@dimen/keyline_0"
app:external_linkCard_content="@string/home_set_complete_external_link_news_content" app:external_linkCard_content="@string/home_set_complete_external_link_news_content"
app:external_linkCard_icon="@drawable/ic_home_news" app:external_linkCard_icon="@drawable/ic_home_news"
app:external_linkCard_icon_background="@drawable/background_circular_dark_cerulean_1" app:external_linkCard_icon_background="@drawable/background_circular_dark_cerulean_1"
@ -114,5 +112,27 @@
</LinearLayout> </LinearLayout>
</androidx.cardview.widget.CardView> </androidx.cardview.widget.CardView>
<androidx.cardview.widget.CardView
android:id="@+id/help_topics_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/keyline_4"
app:layout_constraintTop_toBottomOf="@+id/external_links_bottom_card"
card_view:cardBackgroundColor="@color/white"
card_view:cardCornerRadius="6dp"
card_view:cardMaxElevation="2dp"
card_view:cardUseCompatPadding="true"
card_view:contentPadding="0dp">
<au.gov.health.covidsafe.ui.home.view.ExternalLinkCard
android:id="@+id/help_topics_link"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:minHeight="@dimen/external_link_height"
app:external_linkCard_title="@string/home_set_complete_external_link_help_topics_title"
app:external_linkCard_content="@string/home_set_complete_external_link_help_topics_content"
app:external_linkCard_icon="@drawable/ic_question_circle" />
</androidx.cardview.widget.CardView>
</merge> </merge>

View file

@ -68,6 +68,7 @@
android:paddingLeft="@dimen/keyline_5" android:paddingLeft="@dimen/keyline_5"
android:paddingRight="@dimen/keyline_5" android:paddingRight="@dimen/keyline_5"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:accessibilityTraversalBefore="@id/home_header_help"
android:text="@string/home_header_active_title" android:text="@string/home_header_active_title"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"

View file

@ -26,6 +26,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/keyline_6" android:layout_marginTop="@dimen/keyline_6"
android:text="@string/how_it_works_headline" android:text="@string/how_it_works_headline"
android:contentDescription="@string/how_it_works_headline_content_description"
android:textAppearance="?textAppearanceHeadline2" android:textAppearance="?textAppearanceHeadline2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View file

@ -26,6 +26,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/keyline_6" android:layout_marginTop="@dimen/keyline_6"
android:text="@string/intro_headline" android:text="@string/intro_headline"
android:contentDescription="@string/intro_headline_content_description"
android:textAppearance="?textAppearanceHeadline2" android:textAppearance="?textAppearanceHeadline2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"

View file

@ -19,6 +19,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/keyline_6" android:layout_marginTop="@dimen/keyline_6"
android:text="@string/personal_details_headline" android:text="@string/personal_details_headline"
android:contentDescription="@string/personal_details_headline_content_description"
android:textAppearance="?textAppearanceHeadline2" android:textAppearance="?textAppearanceHeadline2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -31,6 +32,7 @@
android:layout_marginTop="@dimen/keyline_4" android:layout_marginTop="@dimen/keyline_4"
android:text="@string/personal_details_name_title" android:text="@string/personal_details_name_title"
android:textAppearance="?textAppearanceBody1" android:textAppearance="?textAppearanceBody1"
android:importantForAccessibility="no"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/personal_details_headline" /> app:layout_constraintTop_toBottomOf="@+id/personal_details_headline" />
@ -41,7 +43,6 @@
android:layout_height="@dimen/text_field_height" android:layout_height="@dimen/text_field_height"
android:layout_marginTop="@dimen/keyline_1" android:layout_marginTop="@dimen/keyline_1"
android:background="@drawable/edittext_modified_states" android:background="@drawable/edittext_modified_states"
android:hint="@string/personal_details_name_hint"
android:inputType="textPersonName" android:inputType="textPersonName"
android:maxLines="1" android:maxLines="1"
android:paddingStart="@dimen/keyline_1" android:paddingStart="@dimen/keyline_1"
@ -51,6 +52,7 @@
android:textColorHighlight="@color/dark_cerulean_3" android:textColorHighlight="@color/dark_cerulean_3"
android:textCursorDrawable="@null" android:textCursorDrawable="@null"
android:textSize="@dimen/text_body_small" android:textSize="@dimen/text_body_small"
android:contentDescription="@string/personal_details_name_content_description"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/personal_details_name_title" app:layout_constraintTop_toBottomOf="@+id/personal_details_name_title"
@ -83,6 +85,7 @@
android:layout_marginTop="@dimen/keyline_4" android:layout_marginTop="@dimen/keyline_4"
android:text="@string/personal_details_age_title" android:text="@string/personal_details_age_title"
android:textAppearance="?textAppearanceBody1" android:textAppearance="?textAppearanceBody1"
android:importantForAccessibility="no"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/personal_details_name_barrier" /> app:layout_constraintTop_toBottomOf="@+id/personal_details_name_barrier" />
@ -94,7 +97,6 @@
android:layout_marginTop="@dimen/keyline_1" android:layout_marginTop="@dimen/keyline_1"
android:background="@drawable/edit_text_black_background" android:background="@drawable/edit_text_black_background"
android:gravity="center_vertical" android:gravity="center_vertical"
android:hint="@string/personal_details_age_hint"
android:paddingStart="@dimen/keyline_1" android:paddingStart="@dimen/keyline_1"
android:paddingEnd="@dimen/keyline_1" android:paddingEnd="@dimen/keyline_1"
android:textColor="@color/slack_black" android:textColor="@color/slack_black"
@ -103,6 +105,7 @@
android:textSize="@dimen/text_body_small" android:textSize="@dimen/text_body_small"
android:drawableRight="@drawable/ic_arrow_drop_down" android:drawableRight="@drawable/ic_arrow_drop_down"
android:drawableTint="@color/black" android:drawableTint="@color/black"
android:contentDescription="@string/personal_details_age_content_description"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/personal_details_age_title" app:layout_constraintTop_toBottomOf="@+id/personal_details_age_title"
@ -135,6 +138,7 @@
android:layout_marginTop="@dimen/keyline_4" android:layout_marginTop="@dimen/keyline_4"
android:text="@string/personal_details_post_code" android:text="@string/personal_details_post_code"
android:textAppearance="?textAppearanceBody1" android:textAppearance="?textAppearanceBody1"
android:importantForAccessibility="no"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/personal_details_age_barrier" /> app:layout_constraintTop_toBottomOf="@+id/personal_details_age_barrier" />
@ -147,7 +151,6 @@
android:background="@drawable/edittext_modified_states" android:background="@drawable/edittext_modified_states"
android:digits="0123456789" android:digits="0123456789"
android:gravity="center_vertical" android:gravity="center_vertical"
android:hint="@string/personal_details_post_code_hint"
android:inputType="number" android:inputType="number"
android:maxLength="4" android:maxLength="4"
android:paddingStart="@dimen/keyline_1" android:paddingStart="@dimen/keyline_1"
@ -157,6 +160,7 @@
android:textCursorDrawable="@null" android:textCursorDrawable="@null"
android:textSize="@dimen/text_body_small" android:textSize="@dimen/text_body_small"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:contentDescription="@string/personal_details_post_code_content_description"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/personal_details_post_code_title" app:layout_constraintTop_toBottomOf="@+id/personal_details_post_code_title"

View file

@ -63,7 +63,11 @@
android:id="@+id/registration_consent_checkbox" android:id="@+id/registration_consent_checkbox"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="@dimen/keyline_8"
android:text="@string/registration_consent_checkbox" android:text="@string/registration_consent_checkbox"
android:textSize="18sp"
android:gravity="center_vertical"
android:layout_marginTop="@dimen/keyline_2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/registration_consent_second_paragraph" /> app:layout_constraintTop_toBottomOf="@+id/registration_consent_second_paragraph" />

View file

@ -18,6 +18,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/keyline_6" android:layout_marginTop="@dimen/keyline_6"
android:text="@string/under_sixteen_headline" android:text="@string/under_sixteen_headline"
android:contentDescription="@string/under_sixteen_headline_content_description"
android:textAppearance="?textAppearanceHeadline2" android:textAppearance="?textAppearanceHeadline2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@ -63,7 +64,10 @@
android:id="@+id/under_sixteen_checkbox" android:id="@+id/under_sixteen_checkbox"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:minHeight="@dimen/keyline_8"
android:textSize="18sp"
android:text="@string/under_sixteen_further_checkbox" android:text="@string/under_sixteen_further_checkbox"
android:layout_marginTop="@dimen/keyline_2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/under_sixteen_second_paragraph" /> app:layout_constraintTop_toBottomOf="@+id/under_sixteen_second_paragraph" />

View file

@ -32,15 +32,14 @@
<com.google.android.material.checkbox.MaterialCheckBox <com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/upload_consent_checkbox" android:id="@+id/upload_consent_checkbox"
style="?attr/textAppearanceBody2" style="?attr/textAppearanceBody1"
android:layout_marginStart="@dimen/keyline_5" android:layout_marginStart="@dimen/keyline_4"
android:layout_marginTop="@dimen/keyline_4" android:layout_marginTop="@dimen/keyline_4"
android:layout_marginEnd="@dimen/keyline_5" android:layout_marginEnd="@dimen/keyline_4"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/upload_consent" android:minHeight="@dimen/keyline_8"
android:text="@string/upload_consent" />
/>
</LinearLayout> </LinearLayout>

View file

@ -8,9 +8,9 @@
<ImageView <ImageView
android:id="@+id/external_link_round_image" android:id="@+id/external_link_round_image"
android:layout_width="48dp" android:layout_width="40dp"
android:layout_height="48dp" android:layout_height="40dp"
android:layout_marginStart="@dimen/keyline_5" android:layout_marginStart="@dimen/keyline_4"
android:background="@drawable/background_circular_dark_cerulean_4" android:background="@drawable/background_circular_dark_cerulean_4"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/external_link_headline" /> app:layout_constraintTop_toTopOf="@+id/external_link_headline" />
@ -22,21 +22,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/keyline_4" android:layout_marginStart="@dimen/keyline_4"
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
app:layout_constraintBottom_toTopOf="@+id/external_link_space" app:layout_constraintBottom_toTopOf="@+id/external_link_content"
app:layout_constraintEnd_toStartOf="@+id/next" app:layout_constraintEnd_toStartOf="@+id/next"
app:layout_constraintStart_toEndOf="@+id/external_link_round_image" app:layout_constraintStart_toEndOf="@+id/external_link_round_image"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
tools:text="@string/home_set_complete_external_link_app_title" /> tools:text="@string/home_set_complete_external_link_app_title" />
<Space
android:id="@+id/external_link_space"
android:layout_width="match_parent"
android:layout_height="@dimen/keyline_1"
app:layout_constraintBottom_toTopOf="@+id/external_link_content"
app:layout_constraintTop_toBottomOf="@+id/external_link_headline"
app:layout_constraintVertical_chainStyle="packed" />
<TextView <TextView
android:id="@+id/external_link_content" android:id="@+id/external_link_content"
style="?textAppearanceBody2" style="?textAppearanceBody2"
@ -47,7 +39,7 @@
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/next" app:layout_constraintEnd_toStartOf="@+id/next"
app:layout_constraintStart_toEndOf="@+id/external_link_round_image" app:layout_constraintStart_toEndOf="@+id/external_link_round_image"
app:layout_constraintTop_toBottomOf="@+id/external_link_space" app:layout_constraintTop_toBottomOf="@+id/external_link_headline"
app:layout_constraintVertical_chainStyle="packed" app:layout_constraintVertical_chainStyle="packed"
tools:text="@string/home_set_complete_external_link_app_content" /> tools:text="@string/home_set_complete_external_link_app_content" />

View file

@ -51,7 +51,7 @@
<fragment <fragment
android:id="@+id/resistrationConsentFragment" android:id="@+id/resistrationConsentFragment"
android:name="au.gov.health.covidsafe.ui.onboarding.fragment.registrationcontent.RegistrationContentFragment" android:name="au.gov.health.covidsafe.ui.onboarding.fragment.registrationconsent.RegistrationConsentFragment"
android:label="RegistrationContentFragment" android:label="RegistrationContentFragment"
tools:layout="@layout/fragment_registration_consent"> tools:layout="@layout/fragment_registration_consent">
<action <action

View file

@ -10,7 +10,7 @@
<color name="slack_black_3">#DBDDDD</color> <color name="slack_black_3">#DBDDDD</color>
<color name="cadet_grey">#788586</color> <color name="cadet_grey">#788586</color>
<color name="navy_blue">#0C3155</color> <color name="navy_blue">#0C3155</color>
<color name="dark_green">#008A23</color> <color name="dark_green">#00661B</color>
<color name="light_green">#F6FCF4</color> <color name="light_green">#F6FCF4</color>
<color name="grey">#E2E2E2</color> <color name="grey">#E2E2E2</color>
<color name="lighter_green">#C8FFB9</color> <color name="lighter_green">#C8FFB9</color>

View file

@ -20,19 +20,21 @@
<string name="service_ok_title">COVIDSafe is active</string> <string name="service_ok_title">COVIDSafe is active</string>
<string name="service_ok_body"> Keep COVIDSafe active when you leave home or are in public places.</string> <string name="service_ok_body"> Keep COVIDSafe active when you leave home or are in public places.</string>
<string name="service_not_ok_title">Make sure COVIDSafe is active</string> <string name="service_not_ok_title">COVIDSafe is not active</string>
<string name="service_not_ok_body">COVIDSafe is currently inactive. Make sure its active before you leave home and when in public places.</string> <string name="service_not_ok_body">Make sure COVIDSafe is active before you leave home or when in public places.</string>
<string name="service_not_ok_action">Check app now</string> <string name="service_not_ok_action">Check app now</string>
<!-- OnBoarding Intro --> <!-- OnBoarding Intro -->
<string name="intro_headline">Together we can stop the spread of COVID-19</string> <string name="intro_headline">Together we can stop the spread of COVID-19</string>
<string name="intro_headline_content_description">Heading, Together we can stop the spread of COVID-19</string>
<string name="intro_content">COVIDSafe has been developed by the Australian Government to help keep the community safe from the spread of coronavirus.\n\nCOVIDSafe will securely note contact that you have with other users of the app. This will allow state and territory health officials to contact you, if you have been in close contact with someone who has tested positive to the virus.\n\nTogether we can help stop the spread and stay healthy.</string> <string name="intro_content">COVIDSafe has been developed by the Australian Government to help keep the community safe from the spread of coronavirus.\n\nCOVIDSafe will securely note contact that you have with other users of the app. This will allow state and territory health officials to contact you, if you have been in close contact with someone who has tested positive to the virus.\n\nTogether we can help stop the spread and stay healthy.</string>
<string name="intro_disclaimer_data">Please head to <a href="https://www.australia.gov.au/">aus.gov.au</a> for the latest Coronavirus news</string> <string name="intro_disclaimer_data">Please head to <a href="https://www.australia.gov.au/">aus.gov.au</a> for the latest Coronavirus news</string>
<string name="intro_button">I want to help</string> <string name="intro_button">I want to help</string>
<!-- OnBoarding How it works --> <!-- OnBoarding How it works -->
<string name="how_it_works_headline">How COVIDSafe works</string> <string name="how_it_works_headline">How COVIDSafe works</string>
<string name="how_it_works_content">Bluetooth® signals are used to determine when you\'re near another COVIDSafe user.\n\nEvery instance of close contact between you and other COVIDSafe users is noted to create close contact information. The information is encrypted and only stored in your phone.\n\nIf you test positive to COVID-19 as a COVIDSafe user, a state ot territory health official will contact you. They will assist with voluntary upload of your close contact information to a highly secure information storage system\n\nState or territory health officials can also contact you if you came in close contact with another COVIDSafe user who tested positive.\n\nFor more information please refer to the <a href="https://www.covidsafe.gov.au/help-topics.html">Help Topics</a> page</string> <string name="how_it_works_headline_content_description">Heading, How COVIDSafe works</string>
<string name="how_it_works_content">Bluetooth® signals are used to determine when you\'re near another COVIDSafe user.\n\nEvery instance of close contact between you and other COVIDSafe users is noted to create close contact information. The information is encrypted and only stored in your phone.\n\nIf you test positive to COVID-19 as a COVIDSafe user, a state or territory health official will contact you. They will assist with voluntary upload of your close contact information to a highly secure information storage system\n\nState or territory health officials can also contact you if you came in close contact with another COVIDSafe user who tested positive.\n\nFor more information please refer to the <a href="https://www.covidsafe.gov.au/help-topics.html">Help Topics</a> page</string>
<string name="how_it_works_consent">Your consent will always be requested if health tracing is required.</string> <string name="how_it_works_consent">Your consent will always be requested if health tracing is required.</string>
<string name="how_it_works_privacy">Read our <a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">Privacy Notice</a></string> <string name="how_it_works_privacy">Read our <a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">Privacy Notice</a></string>
<string name="how_it_works_terms_conditions">Read our <a href="https://www.covidsafe.gov.au/terms-and-conditions">Terms and conditions</a></string> <string name="how_it_works_terms_conditions">Read our <a href="https://www.covidsafe.gov.au/terms-and-conditions">Terms and conditions</a></string>
@ -40,6 +42,7 @@
<!-- OnBoarding Data Privcay --> <!-- OnBoarding Data Privcay -->
<string name="data_privacy_headline">Registration and privacy</string> <string name="data_privacy_headline">Registration and privacy</string>
<string name="data_privacy_headline_content_description">Heading, Registration and privacy</string>
<string name="data_privacy_content">It is important that you read the COVIDSafe <a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">privacy policy</a> before you register for COVIDSafe.\n\nIf you are under 16 years of age, your parent/guardian must also read the <a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">privacy policy</a>.\n\nUse of COVIDSafe is completely voluntary. You can install or delete the application at any time. If you delete COVIDSafe, <a href="https://www.covidsafe.gov.au/help-topics.html">you may also ask for your information</a> to be deleted from the secure server.\n\nTo register for COVIDSafe, you will need to enter a name, mobile number, age range and postcode.\n\nInformation you submit when you register, and information about your use of COVIDSafe will be collected and stored on a highly secure server.\n\nCOVIDSafe will not collect your location information.\n\nCOVIDSafe will note the time of contact and an anonymous ID code of other COVIDSafe users you come into contact with.\n\nOther COVIDSafe users you come into contact with will record an anonymous ID code and the time of contact with your device.\n\nIf another user tests positive to COVID-19, they may upload their contact information and a state or territory health official may contact you for tracing purposes.\n\nYour registration details will only be used or disclosed for contact tracing and for the proper and lawful functioning of COVIDSafe.\n\nMore information is available at the <a href="https://www.health.gov.au/">Australian Government Department of Health website</a>.\n\nSee the COVIDSafe <a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">privacy policy</a> for further details about your rights about your information and how it will be handled and shared.</string> <string name="data_privacy_content">It is important that you read the COVIDSafe <a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">privacy policy</a> before you register for COVIDSafe.\n\nIf you are under 16 years of age, your parent/guardian must also read the <a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">privacy policy</a>.\n\nUse of COVIDSafe is completely voluntary. You can install or delete the application at any time. If you delete COVIDSafe, <a href="https://www.covidsafe.gov.au/help-topics.html">you may also ask for your information</a> to be deleted from the secure server.\n\nTo register for COVIDSafe, you will need to enter a name, mobile number, age range and postcode.\n\nInformation you submit when you register, and information about your use of COVIDSafe will be collected and stored on a highly secure server.\n\nCOVIDSafe will not collect your location information.\n\nCOVIDSafe will note the time of contact and an anonymous ID code of other COVIDSafe users you come into contact with.\n\nOther COVIDSafe users you come into contact with will record an anonymous ID code and the time of contact with your device.\n\nIf another user tests positive to COVID-19, they may upload their contact information and a state or territory health official may contact you for tracing purposes.\n\nYour registration details will only be used or disclosed for contact tracing and for the proper and lawful functioning of COVIDSafe.\n\nMore information is available at the <a href="https://www.health.gov.au/">Australian Government Department of Health website</a>.\n\nSee the COVIDSafe <a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">privacy policy</a> for further details about your rights about your information and how it will be handled and shared.</string>
<string name="data_privacy_button">Next</string> <string name="data_privacy_button">Next</string>
@ -49,16 +52,20 @@
<string name="registration_consent_first_paragraph">My registration information to allow contact tracing by state and territory health officials.</string> <string name="registration_consent_first_paragraph">My registration information to allow contact tracing by state and territory health officials.</string>
<string name="registration_consent_second_paragraph">My contact information from other COVIDSafe users after they test positive for COVID-19.</string> <string name="registration_consent_second_paragraph">My contact information from other COVIDSafe users after they test positive for COVID-19.</string>
<string name="registration_consent_checkbox">I consent.</string> <string name="registration_consent_checkbox">I consent.</string>
<string name="registration_consent_button">I agree</string> <string name="registration_consent_button">Continue</string>
<!-- OnBoarding Personal details --> <!-- OnBoarding Personal details -->
<string name="personal_details_headline">Enter your details</string> <string name="personal_details_headline">Enter your details</string>
<string name="personal_details_name_title">Full name</string> <string name="personal_details_headline_content_description">Heading, Enter your details</string>
<string name="personal_details_name_title">Full name (First, Last)</string>
<string name="personal_details_name_hint">Firstname Lastname</string> <string name="personal_details_name_hint">Firstname Lastname</string>
<string name="personal_details_age_title">Age</string> <string name="personal_details_name_content_description">Enter full name (First, Last)</string>
<string name="personal_details_age_title">Age (select)</string>
<string name="personal_details_age_hint">Age range</string> <string name="personal_details_age_hint">Age range</string>
<string name="personal_details_age_content_description">Select age range</string>
<string name="personal_details_post_code">Postcode</string> <string name="personal_details_post_code">Postcode</string>
<string name="personal_details_post_code_hint">e.g. 2000</string> <string name="personal_details_post_code_hint">e.g. 2000</string>
<string name="personal_details_post_code_content_description">Enter postcode</string>
<string name="personal_details_disclaimer"><a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">privacy policy</a></string> <string name="personal_details_disclaimer"><a href="https://www.health.gov.au/using-our-websites/privacy/privacy-notice-for-covidsafe-app">privacy policy</a></string>
<string name="personal_details_post_code_dialog_title">Postcode</string> <string name="personal_details_post_code_dialog_title">Postcode</string>
<string name="invalid_post_code">Invalid postcode</string> <string name="invalid_post_code">Invalid postcode</string>
@ -67,6 +74,7 @@
<string name="personal_details_age_dialog_title">Select your age</string> <string name="personal_details_age_dialog_title">Select your age</string>
<string name="personal_details_dialog_ok">Select</string> <string name="personal_details_dialog_ok">Select</string>
<string name="navigation_back_button_content_description">Previous page</string>
<string name="personal_details_button">Continue</string> <string name="personal_details_button">Continue</string>
<string-array name="personal_details_age_array"> <string-array name="personal_details_age_array">
<item>8:015</item> <item>8:015</item>
@ -83,6 +91,7 @@
<!-- OnBoarding Under Sixteen --> <!-- OnBoarding Under Sixteen -->
<string name="under_sixteen_headline">You need the consent of your parent/guardian to proceed</string> <string name="under_sixteen_headline">You need the consent of your parent/guardian to proceed</string>
<string name="under_sixteen_headline_content_description">Heading, You need the consent of your parent/guardian to proceed</string>
<string name="under_sixteen_content">I confirm my parent or guardian consents to the Australian Department of Health collecting:</string> <string name="under_sixteen_content">I confirm my parent or guardian consents to the Australian Department of Health collecting:</string>
<string name="under_sixteen_first_paragraph">My registration information to allow contact tracing by state and territory health officials.</string> <string name="under_sixteen_first_paragraph">My registration information to allow contact tracing by state and territory health officials.</string>
<string name="under_sixteen_second_paragraph">My contact information from other COVIDSafe users after they test positive for COVID-19.</string> <string name="under_sixteen_second_paragraph">My contact information from other COVIDSafe users after they test positive for COVID-19.</string>
@ -156,6 +165,10 @@
<string name="home_set_complete_external_link_been_contacted_title">Has a health official contacted you?</string> <string name="home_set_complete_external_link_been_contacted_title">Has a health official contacted you?</string>
<string name="home_set_complete_external_link_been_contacted_content">You can only upload your information if you have tested positive.</string> <string name="home_set_complete_external_link_been_contacted_content">You can only upload your information if you have tested positive.</string>
<string name="home_set_complete_external_link_app_url">https://www.health.gov.au/resources/apps-and-tools/coronavirus-australia-app</string> <string name="home_set_complete_external_link_app_url">https://www.health.gov.au/resources/apps-and-tools/coronavirus-australia-app</string>
<string name="home_set_complete_external_link_help_topics_title">Help topics</string>
<string name="home_set_complete_external_link_help_topics_content">If you have issues or questions about the app.</string>
<string name="home_version_number">Version Number:%s</string> <string name="home_version_number">Version Number:%s</string>
<string name="action_report_an_issue">Report an issue</string> <string name="action_report_an_issue">Report an issue</string>

View file

@ -99,6 +99,7 @@
<item name="android:background">@drawable/default_button_selector</item> <item name="android:background">@drawable/default_button_selector</item>
<item name="android:textColor">@color/default_button_text_color</item> <item name="android:textColor">@color/default_button_text_color</item>
<item name="android:textAllCaps">false</item> <item name="android:textAllCaps">false</item>
<item name="android:textStyle">bold</item>
<item name="android:textSize">@dimen/text_button</item> <item name="android:textSize">@dimen/text_button</item>
</style> </style>

View file

@ -43,3 +43,7 @@ PROD_BASE_URL="https://device-api.prod.lp.aws.covidsafe.gov.au"
TEST_END_POINT_PREFIX="/uat" TEST_END_POINT_PREFIX="/uat"
STAGING_END_POINT_PREFIX="/uat" STAGING_END_POINT_PREFIX="/uat"
PRODUCTION_END_POINT_PREFIX="/prod" PRODUCTION_END_POINT_PREFIX="/prod"
DEBUG_BACKGROUND_IOS_SERVICE_UUID="AQAgAAAAAAAAAAAAAAAAAAA="
STAGING_BACKGROUND_IOS_SERVICE_UUID="AQAgAAAAAAAAAAAAAAAAAAA="
PRODUCTION_BACKGROUND_IOS_SERVICE_UUID="AQEAAAAAAAAAAAAAAAAAAAA="

17
security.txt Normal file
View file

@ -0,0 +1,17 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
Contact: mailto:support@covidsafe.gov.au
Canonical: https://www.covidsafe.gov.au/.well-known/security.txt
Encryption: https://www.covidsafe.gov.au/.well-known/pgp-key.txt
-----BEGIN PGP SIGNATURE-----
iQFNBAEBCAA3FiEEbUgetBuPAas8w7zHDyQUNNekxBkFAl6xF6AZHHN1cHBvcnRA
Y292aWRzYWZlLmdvdi5hdQAKCRAPJBQ016TEGd+bCACLrYjCbKRsTsQQyZVVtGxj
wYKW2AWclnKZWX/sxnTexg6D1tlGbZbB0OJpw0gJ0NpMoOLFd0kRZXOzv8RocIdx
xd90Nwwl3NQ2ygGCDXR0Y7uRKX/P/Y1xO7XkyiYXAqVq3YWvI9M04pY/TCRvRZ/1
qBs/WDHv/6eRh2qNy/WGXD66CmTLHBcXilTeihcTZ/27Mny5SPthdfy8odQnhUja
NfFxDm+8gQuFKUUQmr9rd8FEMPSl6BWf/kQtn0YmTeZRzD01uT1ydeHkyPSgn+nq
k9us35AlkI7aZNfNkFVWJ2v5ZVAdTHDh3pgBRZETwVg1of5DEXhc5XJV6mLsu9bM
=tik2
-----END PGP SIGNATURE-----