I try to use UsageStatsManager in .NET MAUI.
I asked for permission but I can't get it. It's always denied and of course the stats does not return any values.
private async Task<bool> CheckPermissions()
{
PermissionStatus status = PermissionStatus.Unknown;
if (DeviceInfo.Platform == DevicePlatform.Android)
{
status = await Permissions.CheckStatusAsync<PackagePermission.PackageUsageStatsPermission>();
if (status == PermissionStatus.Granted)
return true;
if(Permissions.ShouldShowRationale<PackagePermission.PackageUsageStatsPermission>())
{
await Shell.Current.DisplayAlert("Needs permissions", "You must activate manualy", "OK");
}
status = await Permissions.RequestAsync<PackagePermission.PackageUsageStatsPermission>();
}
return status == PermissionStatus.Granted;
}
And this is my BasePlatformPermission
using static Microsoft.Maui.ApplicationModel.Permissions;
namespace MauiStats.PackagePermission;
internal class PackageUsageStatsPermission : BasePlatformPermission
{
#if ANDROID
public override (string androidPermission, bool isRuntime)[] RequiredPermissions =>
new List<(string permission, bool isRuntime)>
{
("android.permission.PACKAGE_USAGE_STATS", true)
}.ToArray();
#endif
}
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application android:allowBackup="true" android:icon="@mipmap/appicon" android:supportsRtl="true"></application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
<uses-sdk android:minSdkVersion="21" />
</manifest>
I would like to get an application like this