Android-在调试模式下获取应用列表

问题描述 投票:2回答:3

我正在尝试开发具有以下要求的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
                    }
                }
            }
android android-package-managers
3个回答
2
投票

你在这里,

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

这应该为您提供足够的信息以启动应用程序。


1
投票

我尝试了各种方法,但据我所知,我们无法单独获得处于调试模式的应用程序列表。

通过使用标志,我们只能获取具有此代码的应用程序,而不能获取在设备上运行的其他应用程序。

无论如何,谢谢。如果有人有不同的想法,请告诉我。


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安装的所有应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.