HealthConnect: Add permissions rationale activity

This commit is contained in:
Manuel
2026-05-01 18:10:27 +03:00
committed by Dennis Guse
parent b22e41cf66
commit 75ed3120bd
4 changed files with 129 additions and 0 deletions
+19
View File
@@ -126,6 +126,25 @@ limitations under the License.
<activity android:name=".AboutActivity" />
<activity
android:name=".PermissionsRationaleActivity"
android:exported="true">
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
</intent-filter>
</activity>
<activity-alias
android:name="ViewPermissionUsageActivity"
android:exported="true"
android:permission="android.permission.START_VIEW_PERMISSION_USAGE"
android:targetActivity=".PermissionsRationaleActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
<category android:name="android.intent.category.HEALTH_PERMISSIONS" />
</intent-filter>
</activity-alias>
<activity
android:name=".HelpActivity"
android:label="@string/menu_help" />
@@ -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;
}
}
@@ -0,0 +1,67 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.MaterialToolbar
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:navigationIcon="@drawable/ic_help_24dp"
app:title="@string/health_connect_permissions_rationale_title" />
</com.google.android.material.appbar.AppBarLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="?attr/actionBarSize"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="20dp">
<TextView
style="?attr/textAppearanceHeadline6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/health_connect_permissions_rationale_heading" />
<TextView
style="?attr/textAppearanceBody1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:text="@string/health_connect_permissions_rationale_summary" />
<TextView
style="?attr/textAppearanceBody1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/health_connect_permissions_rationale_usage" />
<TextView
android:id="@+id/permissions_rationale_app_url"
style="?attr/textAppearanceBody1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:autoLink="web"
android:linksClickable="true" />
</LinearLayout>
</ScrollView>
<include
android:id="@+id/bottom_app_bar_layout"
layout="@layout/bottomappbar" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
+4
View File
@@ -679,6 +679,10 @@ limitations under the License.
<string name="hold_to_stop">Hold to stop</string>
<string name="instant_export_enabled_summary">Export track to storage after recording is finished</string>
<string name="instant_export_enabled_title">Instant post-workout export</string>
<string name="health_connect_permissions_rationale_title">Health Connect access</string>
<string name="health_connect_permissions_rationale_heading">How OpenTracks uses Health Connect</string>
<string name="health_connect_permissions_rationale_summary">OpenTracks only writes finished activities to Health Connect when you explicitly enable Health Connect export in settings.</string>
<string name="health_connect_permissions_rationale_usage">The requested Health Connect permission allows OpenTracks to export your recorded workouts. You can disable export again at any time in OpenTracks settings.</string>
<string name="settings_default_export_uri_title">Track export directory</string>
<!-- Fields -->
<string name="field_set_primary">Primary</string>