diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index c231beac1..85e5e3ced 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -126,6 +126,25 @@ limitations under the License.
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/de/dennisguse/opentracks/PermissionsRationaleActivity.java b/src/main/java/de/dennisguse/opentracks/PermissionsRationaleActivity.java
new file mode 100644
index 000000000..c37c0d773
--- /dev/null
+++ b/src/main/java/de/dennisguse/opentracks/PermissionsRationaleActivity.java
@@ -0,0 +1,39 @@
+package de.dennisguse.opentracks;
+
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import de.dennisguse.opentracks.databinding.ActivityPermissionsRationaleBinding;
+import de.dennisguse.opentracks.ui.util.ViewUtils;
+
+public class PermissionsRationaleActivity extends AbstractActivity {
+
+ private ActivityPermissionsRationaleBinding viewBinding;
+
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setTitle(R.string.health_connect_permissions_rationale_title);
+ viewBinding.permissionsRationaleAppUrl.setText(getString(R.string.about_url, getString(R.string.app_web_url)));
+ setSupportActionBar(viewBinding.bottomAppBarLayout.bottomAppBar);
+
+ ViewUtils.makeClickableLinks(findViewById(android.R.id.content));
+ }
+
+ @NonNull
+ @Override
+ protected View createRootView() {
+ viewBinding = ActivityPermissionsRationaleBinding.inflate(getLayoutInflater());
+ return viewBinding.getRoot();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ viewBinding = null;
+ }
+}
diff --git a/src/main/res/layout/activity_permissions_rationale.xml b/src/main/res/layout/activity_permissions_rationale.xml
new file mode 100644
index 000000000..962628195
--- /dev/null
+++ b/src/main/res/layout/activity_permissions_rationale.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 4cd054a72..0e8f03e12 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -679,6 +679,10 @@ limitations under the License.
Hold to stop
Export track to storage after recording is finished
Instant post-workout export
+ Health Connect access
+ How OpenTracks uses Health Connect
+ OpenTracks only writes finished activities to Health Connect when you explicitly enable Health Connect export in settings.
+ The requested Health Connect permission allows OpenTracks to export your recorded workouts. You can disable export again at any time in OpenTracks settings.
Track export directory
Primary