相关疑难解决方法(0)

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

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

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

service android android-activity

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

从后台任务或服务确定当前前台应用程序

我希望有一个在后台运行的应用程序,它知道任何内置应用程序(消息,联系人等)何时运行.

所以我的问题是:

  1. 我应该如何在后台运行我的应用程序.

  2. 我的后台应用程序如何知道前台运行的应用程序是什么.

有经验的人的回应将不胜感激.

android android-service android-background

107
推荐指数
8
解决办法
10万
查看次数

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 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万
查看次数