You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.NET MAUI(.NET 6)中获取Android API 27运行进程列表遇空值问题

解决.NET MAUI(.NET 6)Android API27获取运行进程列表返回null的问题

针对你遇到的问题,以下是排查和解决的步骤:

1. 修正类型转换逻辑

原代码中使用as List<ActivityManager.RunningAppProcessInfo>进行类型转换,若RunningAppProcesses返回的IList<ActivityManager.RunningAppProcessInfo>实例并非List类型,转换会直接返回null。在.NET MAUI中,该返回值的实现类型可能与Xamarin不同,建议改用ToList()方法安全转换:

// 使用Android应用全局上下文获取服务
var activityManager = (ActivityManager)Android.App.Application.Context.GetSystemService(Context.ActivityService);
// 转换为List,避免null引用异常
var runningAppProcesses = activityManager.RunningAppProcesses?.ToList();

2. 确认权限配置

确保在Platform/Android/AndroidManifest.xml中添加必要权限:

<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

3. 处理完整进程列表的权限限制(可选)

如果需要获取其他应用的完整进程信息,Android API23及以上需额外申请PACKAGE_USAGE_STATS权限,该权限无法通过常规运行时申请,需引导用户到系统设置开启:

if (Android.OS.Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.M)
{
    var intent = new Intent(Android.Provider.Settings.ActionUsageAccessSettings);
    intent.AddFlags(ActivityFlags.NewTask);
    Android.App.Application.Context.StartActivity(intent);
}

额外说明

从Android 5.0(API21)开始,普通应用能获取的进程信息已被系统限制,仅能获取自身进程及部分系统进程。若你在Xamarin中能获取更多进程,可能是当时的应用拥有特殊权限或运行在更低API版本的设备上。

内容的提问来源于stack exchange,提问作者aquari93

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:01:42