Skip to content

Commit f594283

Browse files
authored
add possibility to configure app via intent (#65)
1 parent 74d9d53 commit f594283

File tree

4 files changed

+107
-0
lines changed

4 files changed

+107
-0
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,19 @@
146146
<action android:name="android.intent.action.BOOT_COMPLETED" />
147147
</intent-filter>
148148
</receiver>
149+
<receiver android:name="de.fraunhofer.fokus.OpenMobileNetworkToolkit.Receiver.JsonConfigReceiver"
150+
android:exported="true">
151+
<intent-filter>
152+
<action android:name="de.fraunhofer.fokus.OpenMobileNetworkToolkit.CONFIG_JSON" />
153+
</intent-filter>
154+
</receiver>
155+
156+
<receiver android:name="de.fraunhofer.fokus.OpenMobileNetworkToolkit.Receiver.FileConfigReceiver"
157+
android:exported="true">
158+
<intent-filter>
159+
<action android:name="de.fraunhofer.fokus.OpenMobileNetworkToolkit.CONFIG_FILE" />
160+
</intent-filter>
161+
</receiver>
149162

150163
<activity
151164
android:name="de.fraunhofer.fokus.OpenMobileNetworkToolkit.MainActivity"
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Peter Hasse <peter.hasse@fokus.fraunhofer.de>
3+
* SPDX-FileCopyrightText: 2025 Johann Hackler <johann.hackler@fokus.fraunhofer.de>
4+
* SPDX-FileCopyrightText: 2025 Fraunhofer FOKUS
5+
*
6+
* SPDX-License-Identifier: BSD-3-Clause-Clear
7+
*/
8+
9+
package de.fraunhofer.fokus.OpenMobileNetworkToolkit.Receiver;
10+
11+
import android.content.BroadcastReceiver;
12+
import android.content.Context;
13+
import android.content.Intent;
14+
import android.util.Log;
15+
16+
import de.fraunhofer.fokus.OpenMobileNetworkToolkit.Preferences.SharedPreferencesIO;
17+
18+
public class FileConfigReceiver extends BroadcastReceiver {
19+
private static final String TAG = "FileConfigReceiver";
20+
21+
@Override
22+
public void onReceive(Context context, Intent intent) {
23+
String filePath = intent.getStringExtra("filePath");
24+
Log.e(TAG, "onReceive: got following path"+ filePath);
25+
if (filePath == null) {
26+
Log.e(TAG, "onReceive: filePath is null");
27+
return;
28+
}
29+
try {
30+
String jsonString = new String(java.nio.file.Files.readAllBytes(java.nio.file.Paths.get(filePath)));
31+
if (jsonString.isEmpty()) {
32+
Log.e(TAG, "onReceive: JSON string is empty");
33+
return;
34+
}
35+
Log.i(TAG, "onReceive: Successfully read JSON from file: " + filePath);
36+
SharedPreferencesIO.importPreferences(context, jsonString);
37+
} catch (java.io.IOException e) {
38+
Log.e(TAG, "Failed to read JSON from file: " + filePath, e);
39+
}
40+
41+
}
42+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2025 Peter Hasse <peter.hasse@fokus.fraunhofer.de>
3+
* SPDX-FileCopyrightText: 2025 Johann Hackler <johann.hackler@fokus.fraunhofer.de>
4+
* SPDX-FileCopyrightText: 2025 Fraunhofer FOKUS
5+
*
6+
* SPDX-License-Identifier: BSD-3-Clause-Clear
7+
*/
8+
9+
package de.fraunhofer.fokus.OpenMobileNetworkToolkit.Receiver;
10+
11+
import android.content.BroadcastReceiver;
12+
import android.content.Context;
13+
import android.content.Intent;
14+
import android.util.Log;
15+
16+
import de.fraunhofer.fokus.OpenMobileNetworkToolkit.Preferences.SharedPreferencesIO;
17+
18+
public class JsonConfigReceiver extends BroadcastReceiver {
19+
private final String TAG = "JsonConfigReceiver";
20+
21+
@Override
22+
public void onReceive(Context context, Intent intent) {
23+
String jsonString = intent.getStringExtra("jsonData");
24+
Log.e(TAG, "onReceive: got jsonString:"+jsonString );
25+
if (jsonString == null) {
26+
return;
27+
}
28+
SharedPreferencesIO.importPreferences(context, jsonString);
29+
}
30+
}

docs/config.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,26 @@ An example of a config file is shown below:
124124
"Debug": true
125125
}
126126
}
127+
```
128+
129+
## Config File via Intent
130+
131+
You can also pass the config file via an Intent to the App.
132+
Either via JSON directly or as a path to the config file.
133+
134+
135+
### Config via JSON
136+
```bash
137+
adb shell am broadcast \
138+
-a de.fraunhofer.fokus.OpenMobileNetworkToolkit.CONFIG_JSON \
139+
-n de.fraunhofer.fokus.OpenMobileNetworkToolkit/.Receiver.JsonConfigReceiver \
140+
-e jsonData '{}'
141+
```
142+
143+
### Config via File Path
144+
```bash
145+
adb shell am broadcast \
146+
-a de.fraunhofer.fokus.OpenMobileNetworkToolkit.CONFIG_FILE \
147+
-n de.fraunhofer.fokus.OpenMobileNetworkToolkit/.Receiver.FileConfigReceiver
148+
-e filePath 'PATH_TO_YOUR_CONFIG_FILE'
127149
```

0 commit comments

Comments
 (0)