【问题标题】:Get information about current app in foreground在前台获取有关当前应用程序的信息
【发布时间】:2020-01-12 16:05:51
【问题描述】:

如何获取有关当前处于前台的应用的信息?

例如当我打开一个应用程序时,我希望看到应用程序名称在屏幕下方闪烁,如下图所示:

我希望我打开的每个应用程序都发生这种情况,而不仅仅是我打开的每个应用程序的第一个或前 3 个应用程序。然后当我有这些信息时,如果应用程序包名称(或名称,但最好是包名称)与我想要的相同,我想做一些事情。

谢谢

【问题讨论】:

  • 就像当你打开 facebook 然后 toast Facebook 应该被打印,如果是,那么我只是想知道你为什么要这样做?
  • @haresh 是的,这就是我想要实现的。我想实现这一点,以便在打开某个应用程序时,我可以修改音量。

标签: android forms visual-studio xamarin xamarin.forms


【解决方案1】:

试试这个:

 ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
 List l = am.getRecentTasks(1, ActivityManager.RECENT_WITH_EXCLUDED);
 Iterator i = l.iterator();
 PackageManager pm = this.getPackageManager();
 while (i.hasNext()) {
 ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) 
(i.next());
 try {
    CharSequence c = pm.getApplicationLabel(pm.getApplicationInfo(
    info.processName, PackageManager.GET_META_DATA));
    Log.w("LABEL", c.toString()); // here you will get app name
} catch (Exception e) {
    // Name Not FOund Exception
}
}

【讨论】:

  • 当我将它粘贴到我的代码中时(在 OnStart() 处),它给了我 14 个错误,所以我不确定出了什么问题。错误:找不到ActivityManager,找不到CharSequence,找不到Iterator,找不到List,找不到PackageManager,当前上下文中不存在Log。你确定这是C#吗?另外,当我尝试在 Java 中运行它时,它也给了我很多错误,所以我不明白。
  • 实际上,在 Java 中它只会给我 2 错误:Cannot resolve method 'getSystemService(java.lang.String)'Cannot resolve method 'getPackageManager()'
  • 这是我使用的 java 代码,但在 xamarin 中你可以使用活动管理器。试试这个答案stackoverflow.com/questions/11411395/…
  • 不是说它已被弃用吗?
猜你喜欢
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
  • 2019-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多