我正在尝试开发一个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
}
}
}
答案 0 :(得分:2)
你走了,
Intent main = new Intent(Intent.ACTION_MAIN, null);
main.addCategory(Intent.CATEGORY_LAUNCHER);
List pkgAppsList = context.getPackageManager().queryIntentActivities( main, 0);
这应该为您提供足够的信息以启动应用程序。
答案 1 :(得分:1)
我尝试了各种方法,但根据我的理解,我们无法单独以调试模式获取应用列表。
通过使用标志,我们只能获取具有此代码的应用,而不是设备上运行的其他应用。
无论如何,谢谢。如果有人有不同的想法,请告诉我。
答案 2 :(得分: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安装的所有应用程序。