Android - Получить список приложений в режиме отладки

Я пытаюсь разработать приложение для Android, где у меня есть следующее требование. Есть ли способ через код, я могу получить список приложений, установленных на устройствах в режиме отладки.

Заранее спасибо.

РЕДАКТИРОВАТЬ - я попробовал следующий код.

 PackageManager pm = getPackageManager();
         List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

        for (int i=0; i < packages.size(); i++)
            {
                if ((packages.get(i).flags & ApplicationInfo.FLAG_SYSTEM) == 1)
                {
                     //This is for System applications
                }
                else
                {

                    boolean isDebuggable =  (0 != ( getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE ) );

                    if((pm.getLaunchIntentForPackage(packages.get(i).packageName)!=null) && (isDebuggable = true) )                 
                    {
                        // Only For Apps with debug mode set true, this line should get executed 
                        // But this does not happens
                    }
                }
            }

2 ответа

Решение

Я пробовал разные методы, но, насколько я понимаю, мы не можем получить список приложений в режиме отладки отдельно.

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

В любом случае спасибо. Если у кого-то есть другая мысль, пожалуйста, дайте мне знать.

Ну вот,

Intent main = new Intent(Intent.ACTION_MAIN, null);
main.addCategory(Intent.CATEGORY_LAUNCHER);
List pkgAppsList = context.getPackageManager().queryIntentActivities( main, 0);

Это должно дать вам достаточно информации, чтобы запустить приложение.

Из ответа Джастина

Котлин

val allIntent = Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER)
val allApps = packageManager.queryIntentActivities(allIntent, 0)
val debugApps = arrayListOf<ActivityInfo>()

allApps.forEach {
    val appInfo = (packageManager.getApplicationInfo(
        it.activityInfo.packageName,
        0
    ))
    if (0 != appInfo.flags and ApplicationInfo.FLAG_DEBUGGABLE) {
        debugApps.add(it.activityInfo)
    }
}

debugApps.forEach {
    Log.d("debugApps", it.packageName)
}

Можно получить все приложения, которые находятся в режиме отладки. На моем устройстве я получаю все приложения, которые я установил с помощью Android Studio.

Другие вопросы по тегам