簡體   English   中英

在通知上處理鎖定屏幕

[英]Handle Lock Screen on Notification

我創建了鎖屏應用程序,該應用程序與應用程序啟動正常工作。 但是我面臨通知問題。 假設我在應用程序鎖定中添加了WhatsApp,一旦收到任何WhatsApp消息,就會出現鎖定屏幕。 我該如何解決。 我正在使用以下代碼監視前台活動。 是否有其他東西需要監視才能顯示鎖定屏幕。

private String aphpchecke() {

        String currentApp = "NULL";
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            UsageStatsManager usm = null;
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
                usm = (UsageStatsManager) this.getSystemService(USAGE_STATS_SERVICE);
                long time = System.currentTimeMillis();
                List<UsageStats> appList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 1000, time);
                if (appList != null && appList.size() > 0) {
                    SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
                    for (UsageStats usageStats : appList) {
                        mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
                    }
                    if (mySortedMap != null && !mySortedMap.isEmpty()) {
                        currentApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
                    }
                }
            } else {
                ActivityManager am = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);
                assert am != null;
                List<ActivityManager.RunningAppProcessInfo> tasks = am.getRunningAppProcesses();
                currentApp = tasks.get(0).processName;
            }

            Log.e("adapter", "Current App in foreground is: " + currentApp);
            return currentApp;
        } else {


            ActivityManager mActivityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
            assert mActivityManager != null;
            List<ActivityManager.RunningTaskInfo> RunningTask = mActivityManager.getRunningTasks(1);
            ActivityManager.RunningTaskInfo ar = RunningTask.get(0);
            currentApp = ar.topActivity.getClassName();
            Log.i(TAG, "Top Activity " + currentApp);
            return currentApp;
        }


    }

一旦WhatsApp通知到來,前台活動就會顯示WhatsApp軟件包名稱,因此從邏輯上講它必須出現在鎖屏狀態。

E/adapter: Current App in foreground is: com.google.android.apps.nexuslauncher
E/adapter: Current App in foreground is: com.whatsapp
D/FA: Logging event (FE): screen_view(_vs), Bundle[{firebase_event_origin(_o)=auto, firebase_previous_class(_pc)=LockScreen, firebase_previous_id(_pi)=7245334281643449211, firebase_screen_class(_sc)=LockScreen, firebase_screen_id(_si)=7245334281643449214}]

請指導

此代碼不是通知的前景色。

public static String getForegroundPackage(UsageStatsManager usageStatsManager) {
    String packageName = null;

    final long INTERVAL = 1000 * 60;
    final long end = System.currentTimeMillis();
    final long begin = end - INTERVAL;
    final UsageEvents usageEvents = usageStatsManager.queryEvents(begin, end);
    while (usageEvents.hasNextEvent()) {
        UsageEvents.Event event = new UsageEvents.Event();
        usageEvents.getNextEvent(event);
        switch (event.getEventType()) {
            case UsageEvents.Event.MOVE_TO_FOREGROUND:
                packageName = event.getPackageName();
                break;
            case UsageEvents.Event.MOVE_TO_BACKGROUND:
                if (event.getPackageName().equals(packageName)) {
                    packageName = null;
                }
        }
    }

    return packageName;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM