From 8f5e2b422dd5adca699016a48b864859bf7e116e Mon Sep 17 00:00:00 2001 From: hajoha Date: Mon, 4 Aug 2025 14:05:48 +0200 Subject: [PATCH] add possibility to configure app via intent --- app/src/main/AndroidManifest.xml | 13 ++++++ .../Receiver/FileConfigReceiver.java | 42 +++++++++++++++++++ .../Receiver/JsonConfigReceiver.java | 30 +++++++++++++ docs/config.md | 22 ++++++++++ 4 files changed, 107 insertions(+) create mode 100644 app/src/main/java/de/fraunhofer/fokus/OpenMobileNetworkToolkit/Receiver/FileConfigReceiver.java create mode 100644 app/src/main/java/de/fraunhofer/fokus/OpenMobileNetworkToolkit/Receiver/JsonConfigReceiver.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 834cddb3..884d74b2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -146,6 +146,19 @@ + + + + + + + + + + + + * SPDX-FileCopyrightText: 2025 Johann Hackler + * SPDX-FileCopyrightText: 2025 Fraunhofer FOKUS + * + * SPDX-License-Identifier: BSD-3-Clause-Clear + */ + +package de.fraunhofer.fokus.OpenMobileNetworkToolkit.Receiver; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.util.Log; + +import de.fraunhofer.fokus.OpenMobileNetworkToolkit.Preferences.SharedPreferencesIO; + +public class FileConfigReceiver extends BroadcastReceiver { + private static final String TAG = "FileConfigReceiver"; + + @Override + public void onReceive(Context context, Intent intent) { + String filePath = intent.getStringExtra("filePath"); + Log.e(TAG, "onReceive: got following path"+ filePath); + if (filePath == null) { + Log.e(TAG, "onReceive: filePath is null"); + return; + } + try { + String jsonString = new String(java.nio.file.Files.readAllBytes(java.nio.file.Paths.get(filePath))); + if (jsonString.isEmpty()) { + Log.e(TAG, "onReceive: JSON string is empty"); + return; + } + Log.i(TAG, "onReceive: Successfully read JSON from file: " + filePath); + SharedPreferencesIO.importPreferences(context, jsonString); + } catch (java.io.IOException e) { + Log.e(TAG, "Failed to read JSON from file: " + filePath, e); + } + + } +} diff --git a/app/src/main/java/de/fraunhofer/fokus/OpenMobileNetworkToolkit/Receiver/JsonConfigReceiver.java b/app/src/main/java/de/fraunhofer/fokus/OpenMobileNetworkToolkit/Receiver/JsonConfigReceiver.java new file mode 100644 index 00000000..8b6c621c --- /dev/null +++ b/app/src/main/java/de/fraunhofer/fokus/OpenMobileNetworkToolkit/Receiver/JsonConfigReceiver.java @@ -0,0 +1,30 @@ +/* + * SPDX-FileCopyrightText: 2025 Peter Hasse + * SPDX-FileCopyrightText: 2025 Johann Hackler + * SPDX-FileCopyrightText: 2025 Fraunhofer FOKUS + * + * SPDX-License-Identifier: BSD-3-Clause-Clear + */ + +package de.fraunhofer.fokus.OpenMobileNetworkToolkit.Receiver; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.util.Log; + +import de.fraunhofer.fokus.OpenMobileNetworkToolkit.Preferences.SharedPreferencesIO; + +public class JsonConfigReceiver extends BroadcastReceiver { + private final String TAG = "JsonConfigReceiver"; + + @Override + public void onReceive(Context context, Intent intent) { + String jsonString = intent.getStringExtra("jsonData"); + Log.e(TAG, "onReceive: got jsonString:"+jsonString ); + if (jsonString == null) { + return; + } + SharedPreferencesIO.importPreferences(context, jsonString); + } +} diff --git a/docs/config.md b/docs/config.md index 118717fe..831c7b89 100644 --- a/docs/config.md +++ b/docs/config.md @@ -124,4 +124,26 @@ An example of a config file is shown below: "Debug": true } } +``` + +## Config File via Intent + +You can also pass the config file via an Intent to the App. +Either via JSON directly or as a path to the config file. + + +### Config via JSON +```bash +adb shell am broadcast \ + -a de.fraunhofer.fokus.OpenMobileNetworkToolkit.CONFIG_JSON \ + -n de.fraunhofer.fokus.OpenMobileNetworkToolkit/.Receiver.JsonConfigReceiver \ + -e jsonData '{}' +``` + +### Config via File Path +```bash +adb shell am broadcast \ + -a de.fraunhofer.fokus.OpenMobileNetworkToolkit.CONFIG_FILE \ + -n de.fraunhofer.fokus.OpenMobileNetworkToolkit/.Receiver.FileConfigReceiver + -e filePath 'PATH_TO_YOUR_CONFIG_FILE' ``` \ No newline at end of file