xamarin 使用Net Maui获取Android操作系统中正在运行的进程列表

kmb7vmvb  于 2023-02-06  发布在  Android
关注(0)|答案(1)|浏览(234)

我正在尝试访问Android操作系统上运行的进程列表(我说的是API 27),使用NET MAUI(NET 6),但现在列表返回null。我不知道我应该如何访问这个。
我在Xamarin上尝试使用下面的方法来获取正在运行的进程列表,并按预期工作。

ActivityManager activityManager = mauicontext.GetSystemService(Context.ActivityService) as ActivityManager;
ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();
List<ActivityManager.RunningAppProcessInfo> runningAppProcesses = activityManager.RunningAppProcesses as List<ActivityManager.RunningAppProcessInfo>;

现在使用Net Maui(Net.6),runningAppProcesses List返回空值的方法相同。

yrdbyhpb

yrdbyhpb1#

最初,您是否在AndroidManifest.xml中添加了以下权限?

mlns:tools="http://schemas.android.com/tools"

<uses-permission android:name="android.permission.REAL_GET_TASKS"
    tools:ignore="ProtectedPermissions" />

此外,自Android 7.0起,activityManager.RunningAppProcesses只能获取自己的应用,但您可以使用以下代码尝试获取Android 8.1中当前正在运行的应用。

PackageManager localPackageManager = this.PackageManager;
 var localList = localPackageManager.GetInstalledPackages(0).ToList();
 var app = new Java.Util.ArrayList();
 for (int i = 0; i < localList.Count; i++)
{
     PackageInfo localPackageInfo1 = (PackageInfo)localList[i];
     String str1 = localPackageInfo1.PackageName.Split(":")[0];
     if (((ApplicationInfoFlags.System & localPackageInfo1.ApplicationInfo.Flags) == 0)
      && ((ApplicationInfoFlags.UpdatedSystemApp & localPackageInfo1.ApplicationInfo.Flags) == 0)
      && ((ApplicationInfoFlags.Stopped & localPackageInfo1.ApplicationInfo.Flags) == 0))
       {
          app.Add(str1);
       }
 }

相关问题