3
3
import android .Manifest ;
4
4
import android .app .AlertDialog ;
5
5
import android .content .BroadcastReceiver ;
6
- import android .content .ComponentName ;
7
6
import android .content .Context ;
8
7
import android .content .Intent ;
9
8
import android .content .IntentFilter ;
9
+ import android .content .SharedPreferences ;
10
10
import android .content .pm .PackageManager ;
11
11
import android .os .Build ;
12
12
import android .os .Bundle ;
@@ -36,6 +36,12 @@ public void onReceive(Context context, Intent intent) {
36
36
if (TrafficService .ACTION_UPDATE_STATS .equals (intent .getAction ())) {
37
37
int requestCount = intent .getIntExtra ("requestCount" , 0 );
38
38
trafficStatsTextView .setText ("Traffic Stats: " + requestCount + " requests" );
39
+
40
+ // Save request count to SharedPreferences
41
+ SharedPreferences preferences = getSharedPreferences ("app_prefs" , MODE_PRIVATE );
42
+ SharedPreferences .Editor editor = preferences .edit ();
43
+ editor .putInt ("request_count" , requestCount );
44
+ editor .apply ();
39
45
}
40
46
}
41
47
};
@@ -50,6 +56,15 @@ protected void onCreate(Bundle savedInstanceState) {
50
56
trafficStatsTextView = findViewById (R .id .trafficStatsTextView );
51
57
statusTextView = findViewById (R .id .statusTextView );
52
58
59
+ // Restore saved traffic generation setting
60
+ SharedPreferences preferences = getSharedPreferences ("app_prefs" , MODE_PRIVATE );
61
+ boolean trafficEnabled = preferences .getBoolean ("traffic_enabled" , false );
62
+ trafficCheckBox .setChecked (trafficEnabled );
63
+
64
+ // Restore the saved request count
65
+ int savedRequestCount = preferences .getInt ("request_count" , 0 );
66
+ trafficStatsTextView .setText ("Traffic Stats: " + savedRequestCount + " requests" );
67
+
53
68
// Check and request POST_NOTIFICATIONS permission if needed
54
69
if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) { // Android 13+
55
70
if (ContextCompat .checkSelfPermission (this , Manifest .permission .POST_NOTIFICATIONS ) != PackageManager .PERMISSION_GRANTED ) {
@@ -59,6 +74,11 @@ protected void onCreate(Bundle savedInstanceState) {
59
74
60
75
// Toggle traffic generation when checkbox is clicked
61
76
trafficCheckBox .setOnCheckedChangeListener ((buttonView , isChecked ) -> {
77
+ // Save the traffic generation setting
78
+ SharedPreferences .Editor editor = preferences .edit ();
79
+ editor .putBoolean ("traffic_enabled" , isChecked );
80
+ editor .apply ();
81
+
62
82
if (isChecked ) {
63
83
// Check if POST_NOTIFICATIONS permission is granted (Android 13+)
64
84
if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) {
@@ -104,7 +124,11 @@ protected void onResume() {
104
124
super .onResume ();
105
125
// Register the receiver
106
126
IntentFilter filter = new IntentFilter (TrafficService .ACTION_UPDATE_STATS );
107
- registerReceiver (statsReceiver , filter );
127
+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .TIRAMISU ) { // Android 13 and above
128
+ registerReceiver (statsReceiver , filter , Context .RECEIVER_NOT_EXPORTED );
129
+ } else {
130
+ registerReceiver (statsReceiver , filter ); // Older versions
131
+ }
108
132
}
109
133
110
134
@ Override
0 commit comments