Pobieranie listy odpalonych aplikacji - android

0
package com.locker

import android.app.ActivityManager
import android.app.Service
import android.content.Intent
import android.os.Handler
import android.os.IBinder
import android.util.Log

class BackgroundService : Service() {
    private lateinit var mHandler: Handler
    private lateinit var mRunnable: Runnable

    override fun onBind(intent: Intent): IBinder? {
        throw UnsupportedOperationException("Not yet implemented")
    }

    override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
        mHandler = Handler()
        mRunnable = Runnable { checkApps() }
        mHandler.postDelayed(mRunnable, 500)

        return Service.START_STICKY
    }

    private fun checkApps() {
        val am = getSystemService(ACTIVITY_SERVICE) as ActivityManager
        val runningAppProcessInfo = am.runningAppProcesses
        Log.d("backgroundService", runningAppProcessInfo.indices.toString())
        for (i in runningAppProcessInfo.indices) {
            Log.d("backgroundService", runningAppProcessInfo[i].processName)
            if (runningAppProcessInfo[i].processName == "com.android.settings") {
                //val intent = Intent(this, MainActivity::class.java).apply {}
                //startActivity(intent)
                Log.d("backgroundService", runningAppProcessInfo[i].processName)
            }
        }
        mHandler.postDelayed(mRunnable, 500)
    }
}

Zrobiłem serwis który sprawdza co 500ms jakie aplikacje są aktualnie odpalone na urządzeniu jednak nie działa to tak jak tego oczekiwałem. Cały czas loguje mi tylko moją aplikację nawet gdy odpalę kilka innych. Ktoś wie co robię źle ?
API 26

0

Nie ma takiej możliwośc powyżej SDK 23 dla zewnętrznych aplikacji. Musiałbyś podpisać swoją aplikację tym samym kluczem, którym jest podpisana wersja systemu, żeby otrzymać na to pozwolenie.

0

Jakby kogoś to interesowało to da się za pomocą UsageStatsManager

1 użytkowników online, w tym zalogowanych: 0, gości: 1