【问题标题】:Android how to know which application is opened at any instanceAndroid如何知道在任何情况下打开了哪个应用程序
【发布时间】:2012-03-13 13:13:35
【问题描述】:

在我的应用程序中,我想使用 BroadcastReceiver 显示一条消息,但我希望它仅在应用程序未打开且当前在屏幕上运行(它可能在后台运行)时才显示 toast 消息。但我没有找到相应的实现条件的确切代码。

我已经试过代码了,

    ActivityManager manager = 
        (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> processes = manager.getRunningAppProcesses();

但它在运行另一个应用程序时也会停止消息。

请帮助我如何让我的代码知道应用程序当前是否打开?谢谢。

【问题讨论】:

标签: android android-intent android-emulator android-manifest android-activity


【解决方案1】:

感谢this answer,以及扩展名 cyanogenmod 7。

你已经成功了一半。 RunningAppProcessInfo 有一个名为 pkgList 的字段,一个 String[] 包含进程中的所有包名称,您可以通过匹配来确定它是否是您的应用程序。

private RunningAppProcessInfo getForegroundApp() {
    RunningAppProcessInfo result=null, info=null;

    if(mActivityManager==null)
        mActivityManager = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
    List <RunningAppProcessInfo> l = mActivityManager.getRunningAppProcesses();
    Iterator <RunningAppProcessInfo> i = l.iterator();
    while(i.hasNext()){
        info = i.next();
        if(info.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND
                && !isRunningService(info.processName)){
            result=info;
            break;
        }
    }
    return result;

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 2023-02-03
    相关资源
    最近更新 更多