相关疑难解决方法(0)

Android:如何获取当前前台活动(来自服务)?

是否有一种原生的android方法来从服务获取对当前运行的Activity的引用?

我有一个在后台运行的服务,我想在事件发生时(在服务中)更新我当前的Activity.有没有一种简单的方法(就像我上面建议的那样)?

service android android-activity

172
推荐指数
7
解决办法
26万
查看次数

Android 5.1.1及更高版本 - getRunningAppProcesses()仅返回我的应用程序包

谷歌似乎最终关闭了获取当前前台应用程序包的所有大门.

在Lollipop更新之后,getRunningTasks(int maxNum)由于这个答案,我使用此代码从Lollipop获取前台应用程序包:

final int PROCESS_STATE_TOP = 2;
RunningAppProcessInfo currentInfo = null;
Field field = null;
try {
    field = RunningAppProcessInfo.class.getDeclaredField("processState");
} catch (Exception ignored) { 
}
ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appList = am.getRunningAppProcesses();
for (RunningAppProcessInfo app : appList) {
    if (app.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND &&
        app.importanceReasonCode == 0 ) {
        Integer state = null;
        try {
            state = field.getInt( app );
        } catch (Exception ignored) {
        }
        if (state != null && state == …
Run Code Online (Sandbox Code Playgroud)

android android-6.0-marshmallow

97
推荐指数
3
解决办法
8万
查看次数

Android L中getRunningTasks的替代方案

已经有很好的文档证明getRunningTasks现在已经在Android L中被弃用了.我用它来获得顶级活动,这是我的应用程序的一个重要功能.虽然不完整,但Google员工已经承诺在Android L中推出新的解决方案.解决方案指出:

"对于L,我们计划有一个新的解决方案来解决getRecentTasks()的一些现有用例:我们希望以新的和扩展的形式公开系统的内部使用情况统计服务,第三方应用程序可通过SDK.

新的使用统计服务应该有两个主要信息.首先,它将提供用户在每个应用程序中花费的时间的汇总统计信息,以及这些应用程序的上次启动时间,累计数天,数周,数月和数年.其次,它将包括过去几天的详细使用事件,描述任何活动转换到前台或后台时的时间和ComponentName.

访问此新使用情况数据将要求用户通过新设置UI明确授予应用程序访问使用情况统计信息的权限.他们将能够随时查看所有可以访问和撤消访问权限的应用.

我意识到这不会涵盖旧的getRecentsTask API的所有可能用途,我为此道歉.但是,对于我们认为API的当前主要用途,新的使用统计API应该更加强大和高效."

您可以在此处详细了解:https://code.google.com/p/android-developer-preview/issues/detail?id = 29 #c50

我试过查看Android L文档,但找不到任何与上面提到的使用统计服务相关的内容.有人用过这个API吗?有人能指出我的文档吗?

android android-5.0-lollipop

26
推荐指数
1
解决办法
2万
查看次数

无法在Android Lollipop 5.0中获取前台活动名称

我使用以下代码在变量foregroundTaskPackageName中获取前台应用程序的活动名称.它适用于4.1到4.4之间的所有操作系统版本,但在Android 5.0 Lollipop中不起作用.

任何人都可以帮助5.0 Lollipop中的变化吗?在Lollipop中 - 我为foregroundTaskPackageName获取的文本只是'Launcher3'.我正在使用Genymotion仿真器.

ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
RunningTaskInfo foregroundTaskInfo = am.getRunningTasks(1).get(0); // get
                                                                        // list
                                                                        // of
                                                                        // running
                                                                        // tasks
String foregroundTaskAppName = null;
String foregroundTaskPackageName = foregroundTaskInfo.topActivity
                .getPackageName();
Run Code Online (Sandbox Code Playgroud)

android activity-manager android-5.0-lollipop

21
推荐指数
3
解决办法
2万
查看次数

是否有getRunningTask API的替代方案

我在我的一个应用程序中使用getRunningTask API来查找Foreground应用程序.自Lollipop以来,该API已被弃用.在此弃用之后,我更喜欢getRunningAppProcess API以及Importance_Foreground.我还从这个列表中排除了REASON_SERVICE和REASON_PROVIDER.我基于一个完美的逻辑过滤掉了系统应用程序.问题是,如果应用程序A在前台,我将应用程序B作为峰值.所以,这种方法目前值得怀疑.getRunningTask API还有其他替代方案吗?或者我在当前的方法中遗漏了任何简单的事情.请帮帮我们

android

6
推荐指数
1
解决办法
1万
查看次数