GaneshRfromSpace Ответов: 0

Как приложение smart app lock В android обнаруживает запуск приложения ?


Как обнаружить запуск приложения в android-приложении ?
Каким образом приложения, удобное приложение для блокировки в Android обнаружить запуск приложения ?

import android.app.ActivityManager;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import java.util.Iterator;
import java.util.List;

public class MainActivity extends AppCompatActivity
{
public  static  final String TAG ="MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final PackageManager packageManager = getPackageManager();
        //get a list of installed apps.
        List<ApplicationInfo> packages = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);
        for (ApplicationInfo packageInfo : packages) {
            Log.d(TAG, "Installed package :" + packageInfo.packageName);
            Log.d(TAG, "Source dir : " + packageInfo.sourceDir);
            Log.d(TAG, "Launch Activity :" + packageManager.getLaunchIntentForPackage(packageInfo.packageName));
        }

        ActivityManager activityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
        List l = activityManager.getRecentTasks(1, ActivityManager.RECENT_WITH_EXCLUDED);
        Iterator i = l.iterator();
        
        while (i.hasNext()) {
            ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo) i.next();
            try
            {
                CharSequence c = packageManager.getApplicationLabel(packageManager.getApplicationInfo(
                        info.processName, PackageManager.GET_META_DATA));
                Log.w("LABEL", c.toString());
            } catch (Exception e)
            {}
        }
    }
}


Что я уже пробовал:

Я попробовал этот фрагмент кода, чтобы обнаружить, по крайней мере, запущенные в данный момент приложения. Но это бросает меня в тупик. Класс Исключению Броска :

android.app.ActivityManager$RecentTaskInfo cannot be cast to android.app.ActivityManager$RunningAppProcessInfo

Richard MacCutchan

Потому что эти два класса разные.

David Crow

Исключение состоит в том, чтобы сказать вам, в чем именно заключается проблема: RecentTaskInfo не может быть брошен в RunningAppProcessInfo. Проверьте строку 74 из MainActivity.java.

Если оставить этот вопрос в стороне, то почему вы пытаетесь использовать устаревший метод getRecentTasks()- Видишь предупреждение здесь.

GaneshRfromSpace

Да, я очень недавно понял, что и getRunningTasks(int), и getRunningAppProcesses() устарели от Android 5+.

Я нашел эту библиотеку здесь.

Есть ли какой-нибудь другой способ узнать, какие все приложения в данный момент запущены ?

0 Ответов