appUsageData method
Future<List<AppUsage> >
appUsageData({
- DateTime? startTime,
- DateTime? endTime,
- UsageInterval usageInterval = UsageInterval.daily,
- List<
String> ? packagesName,
override
Fetch app usage data from the device.
Returns a map with the following keys:
status
: Whether the data was successfully fetched.data
: Map of app bundle IDs to usage data.error
: Error message if the data fetch failed.
Implementation
@override
Future<List<AppUsage>> appUsageData({
DateTime? startTime,
DateTime? endTime,
UsageInterval usageInterval = UsageInterval.daily,
List<String>? packagesName,
}) async {
final arguments = <Object?, Object?>{};
if (startTime != null) {
arguments[Argument.startTimeInMillisecond] =
startTime.millisecondsSinceEpoch;
}
if (endTime != null) {
arguments[Argument.endTimeInMillisecond] = endTime.millisecondsSinceEpoch;
}
if (packagesName != null) {
arguments[Argument.packagesName] = packagesName;
}
final result = await methodChannel.invokeMethod<Map<Object?, Object?>>(
MethodName.appUsageData, arguments);
return await Isolate.run(() async {
final map = await _convertToStringDynamicMap(result);
final response = BaseAppUsage.fromJson(map);
if (response.status) {
return response.data;
} else {
debugPrint(map.toString());
return <AppUsage>[];
}
});
}