Skip to content
This repository was archived by the owner on May 15, 2024. It is now read-only.

Commit 6e72571

Browse files
committed
Add API34 compatibility for networking & battery
1 parent 6f527db commit 6e72571

File tree

4 files changed

+21
-8
lines changed

4 files changed

+21
-8
lines changed

DeviceTests/DeviceTests.Android/Properties/AndroidManifest.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0.1.0" package="com.xamarin.essentials.devicetests" android:installLocation="auto">
33
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="33" />
4-
<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
5-
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
4+
<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS" />
5+
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
66
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
77
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
88
<uses-permission android:name="android.permission.BATTERY_STATS" />

Xamarin.Essentials/Battery/Battery.android.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ static void StartEnergySaverListeners()
1515
return;
1616

1717
powerReceiver = new EnergySaverBroadcastReceiver(OnEnergySaverChanged);
18-
Platform.AppContext.RegisterReceiver(powerReceiver, new IntentFilter(PowerManager.ActionPowerSaveModeChanged));
18+
Platform.RegisterBroadcastReceiver(powerReceiver, new IntentFilter(PowerManager.ActionPowerSaveModeChanged), false);
1919
}
2020

2121
static void StopEnergySaverListeners()
@@ -52,7 +52,7 @@ static void StartBatteryListeners()
5252
Permissions.EnsureDeclared<Permissions.Battery>();
5353

5454
batteryReceiver = new BatteryBroadcastReceiver(OnBatteryInfoChanged);
55-
Platform.AppContext.RegisterReceiver(batteryReceiver, new IntentFilter(Intent.ActionBatteryChanged));
55+
Platform.RegisterBroadcastReceiver(batteryReceiver, new IntentFilter(Intent.ActionBatteryChanged), false);
5656
}
5757

5858
static void StopBatteryListeners()
@@ -76,7 +76,7 @@ static double PlatformChargeLevel
7676
Permissions.EnsureDeclared<Permissions.Battery>();
7777

7878
using (var filter = new IntentFilter(Intent.ActionBatteryChanged))
79-
using (var battery = Platform.AppContext.RegisterReceiver(null, filter))
79+
using (var battery = Platform.RegisterBroadcastReceiver(null, filter, false))
8080
{
8181
var level = battery.GetIntExtra(BatteryManager.ExtraLevel, -1);
8282
var scale = battery.GetIntExtra(BatteryManager.ExtraScale, -1);
@@ -96,7 +96,7 @@ static BatteryState PlatformState
9696
Permissions.EnsureDeclared<Permissions.Battery>();
9797

9898
using (var filter = new IntentFilter(Intent.ActionBatteryChanged))
99-
using (var battery = Platform.AppContext.RegisterReceiver(null, filter))
99+
using (var battery = Platform.RegisterBroadcastReceiver(null, filter, false))
100100
{
101101
var status = battery.GetIntExtra(BatteryManager.ExtraStatus, -1);
102102
switch (status)
@@ -123,7 +123,7 @@ static BatteryPowerSource PlatformPowerSource
123123
Permissions.EnsureDeclared<Permissions.Battery>();
124124

125125
using (var filter = new IntentFilter(Intent.ActionBatteryChanged))
126-
using (var battery = Platform.AppContext.RegisterReceiver(null, filter))
126+
using (var battery = Platform.RegisterBroadcastReceiver(null, filter, false))
127127
{
128128
var chargePlug = battery.GetIntExtra(BatteryManager.ExtraPlugged, -1);
129129

Xamarin.Essentials/Connectivity/Connectivity.android.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static void StartListeners()
3434

3535
conectivityReceiver = new ConnectivityBroadcastReceiver(OnConnectivityChanged);
3636

37-
Platform.AppContext.RegisterReceiver(conectivityReceiver, filter);
37+
Platform.RegisterBroadcastReceiver(conectivityReceiver, filter, false);
3838
}
3939

4040
static void StopListeners()

Xamarin.Essentials/Platform/Platform.android.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,19 @@ static void CheckAppActions(AndroidIntent intent)
122122
}
123123
}
124124

125+
internal static AndroidIntent RegisterBroadcastReceiver(BroadcastReceiver receiver, IntentFilter filter, bool exported)
126+
{
127+
if (HasApiLevel(34))
128+
{
129+
var flags = exported ? ReceiverFlags.Exported : ReceiverFlags.NotExported;
130+
131+
// Explicit cast of flags because of: https://github.com/xamarin/xamarin-android/issues/7503
132+
return AppContext.RegisterReceiver(receiver, filter, (ActivityFlags)flags);
133+
}
134+
135+
return AppContext.RegisterReceiver(receiver, filter);
136+
}
137+
125138
internal static bool HasSystemFeature(string systemFeature)
126139
{
127140
var packageManager = AppContext.PackageManager;

0 commit comments

Comments
 (0)