diff --git a/README.md b/README.md index 09cab31..430bad9 100644 --- a/README.md +++ b/README.md @@ -182,5 +182,7 @@ In the app: - Open the `Update` page and tap `Details` to see the installed version, selected update source, APK/Release resolver behavior, install permission state, and a `Check update` button. +- Open the `Update` page and tap `App settings` for Android's full per-app + permission/settings screen. - Open the `About` page to see the app version, package name, API/protocol summary, selected update source, and update policy. diff --git a/app/src/main/java/com/neatstudio/tmuxandroid/MainActivity.java b/app/src/main/java/com/neatstudio/tmuxandroid/MainActivity.java index ca2210a..913df9e 100644 --- a/app/src/main/java/com/neatstudio/tmuxandroid/MainActivity.java +++ b/app/src/main/java/com/neatstudio/tmuxandroid/MainActivity.java @@ -302,6 +302,7 @@ public final class MainActivity extends Activity { content.addView(actionPanel( actionButton("Install permission", view -> openInstallPermissionSettings()), actionButton("Notifications", view -> requestNotificationPermission()), + actionButton("App settings", view -> openAppSettings()), actionButton("Details", view -> showPermissionsAndUpdateStatus()) )); scroll.addView(content); @@ -1225,6 +1226,7 @@ public final class MainActivity extends Activity { text.append("Notifications: no runtime permission required.\n"); } text.append("SMS: not requested. This tmux client does not need SMS permission."); + text.append("\nOpen App settings for Android's full per-app permission and storage/network controls."); return text.toString(); } @@ -1308,6 +1310,14 @@ public final class MainActivity extends Activity { requestPermissions(new String[]{Manifest.permission.POST_NOTIFICATIONS}, 3001); } + private void openAppSettings() { + Intent intent = new Intent( + Settings.ACTION_APPLICATION_DETAILS_SETTINGS, + Uri.parse("package:" + getPackageName()) + ); + startActivity(intent); + } + private void showImagePreview(String path, String basePath) { progressBar.setVisibility(View.VISIBLE); executor.execute(() -> { diff --git a/docs/android-client-notes.md b/docs/android-client-notes.md index 4e2ebe0..32570ce 100644 --- a/docs/android-client-notes.md +++ b/docs/android-client-notes.md @@ -89,8 +89,8 @@ Implemented now: - one-download-per-version APK cache, SHA-256 verification, and installer handoff - permission/about surfaces for unknown-app install status, notification status, - app version, package name, selected update source, and HTTP/WebSocket - API/protocol summary + app settings, app version, package name, selected update source, and + HTTP/WebSocket API/protocol summary ## Update And Release Policy