2017-02-15 139 views
0

現在、AndroidのUsageStatsを使用して、サービス内のAndroidで現在のフォアグラウンドアプリケーションを取得しています。しかし、どのアプリからでも通知を受けると、私のアプリは他のアプリがフォアグラウンドにあると考えます。 「ひどいタイプだよ」Androidでフォアグラウンドアプリケーションを取得する方法。通知の除外

基本的には、通知を除いた現在のフォアグラウンドアプリケーションを取得する方法が必要です。

これは取得できましたか?ありがとう!

EDIT:

私の要求は私の現在の方法では不可能であるならば、私の他のオプションは何ですか?

+1

あなたは関係なく、通知の、「現在のフォアグラウンドアプリケーション」を取得するために 'UsageStatsManager'を使用することはできません。 "注:イベントログの最後の数分は、アプリケーションによる悪用を防ぐために切り捨てられます。 – CommonsWare

+0

@CommonsWareありがとう、どうもありがとうございます! 「イベントログ」とはどういう意味ですか? – Epicality

+1

私は 'UsageStatsManager'で利用可能なデータを駆動する使用イベントのログを参照していると仮定します。私はドキュメンテーションを書いていないので、私は確かに言えません。 – CommonsWare

答えて

1

あなたはフォアグラウンドで現在のアプリケーションのパッケージ名を取得できます。

private String isAppOnForeground(Context context) { 
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); 
    List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); 
    if (appProcesses == null) { 
     return null; 
    } 

    for (RunningAppProcessInfo appProcess : appProcesses) { 
     if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { 
     return appProcess.processName; 
     } 
    } 
    return null; 
    } 
+0

さて、明確にするために、これは通知のポップアップを除外していますか? – Epicality

+0

このリストは、自分のアプリケーションのパッケージ名のみを返します。しかし、多くの研究をした後、私は、Googleが基本的にすべてをシャットダウンしていることに気付きました。このデータにアクセスすることでした。あなたの答えは最高ですので、私はそれに応じてマークしました。 – Epicality

関連する問題