Articles of android package managers

adb“install”命令和“pm install”命令之间的区别?

使用install命令安装应用程序和使用包管理器的pm install命令有什么区别? 他们做同样的工作吗? 一个命令实际上是在后面调用另一个吗? adb install -r APK_FILE adb shell pm install APK_FILE

当应用处于“待发布”阶段并由审核人/测试人员(Google Play商店)使用/审核时,InstallerPackageName是什么?

情况 我的应用程序中有一组function,它们根据安装的商店进行更改 。 例如,我想为家庭观众和儿童展示一组更受限制的广告,以便有资格参加Google Play for Education类别。 在其他商店,我仍然想限制,但不希望像过滤广告一样严格。 我最后的一般观察是,如果我选择加入“Google Play for Education”类别,则需要花费更多时间才能发布,因为以下内容(如开发人员控制台所述): 选中此框会提交此应用,以便包含在Google Play for Education的“教育工作者推荐”部分中。 关于推荐哪些应用程序的最终决定是由第三方教师网络完成的。 如果您的应用被选中,我们将通过电子邮件通知您。 如果没有,您的应用仍可在Google Play for Education中搜索。 现在,在应用程序在此类别中发布教师网络之前,我假设,下载并测试/validation是否符合指南并且没有违规。 问题 为了区分我安装的商店我显然使用这个: PackageManager packageManager = context.getPackageManager(); String installer = packageManager.getInstallerPackageName(packageName); if (installer == null) installer = “”; //to avoid NPE if (installer.equals(“com.android.vending”)) { //It is installed from Google Play store //PROBLEM: THIS […]

从apk文件获取minSdkVersion和targetSdkVersion

我试图从存储在设备上的apk获取minSdkVersion和targetSdkVersion的值。 此处讨论了其他详细信息,但ApplicationInfo类中只提供了targetSdkVersion 。 可以通过提取apk文件并阅读AndroidManifest.xml来获取minSdkVersion吗?

在Android中获取活动的应用程序名称

我正在尝试制作一个显示所有活动应用程序的程序。 我到处搜索,但只能find只显示包名的代码。 如果您的主人可以告诉我如何显示所有活动的应用程序名称,那将是非常有帮助的

Android Mreflection方法freeStorageAndNotifyexception

我正在使用reflection方法freeStorageAndNotify: Method freeStorageAndNotify = null; freeStorageAndNotify = service.packageManager.getClass().getMethod( “freeStorageAndNotify”, long.class, IPackageDataObserver.class); freeStorageAndNotify.invoke(PackageManager.class, maxCache + freeSpace, packageDataObserver); 这会导致InvocationTargetException: java.lang.SecurityException: Neither user 10199 nor current process has android.permission.CLEAR_APP_CACHE. 一些要点: – 我已经有android.permission.CLEAR_APP_CACHE – 这只发生在android“M”版本中(从开发者网站闪烁预览sdk) 我知道这是一个黑客攻击,谷歌没有为此提供一些官方API,但是有很多清洁应用程序只需点击一下即可清除所有设备缓存,所以如果有人知道如何通过另一种解决方法绕过这个问题我我很高兴看到这一点。 非常感谢你的帮助

如何检查是否启用了活动?

背景 我正在尝试检查在运行时是否启用/禁用活动(或任何其他应用程序组件types)。 问题 可以使用下一个代码: final ComponentName componentName = new ComponentName(context, activityClass); final PackageManager pm = context.getPackageManager(); final int result = pm.getComponentEnabledSetting(componentName); 但是返回的结果,如文档中所写: 返回组件的当前启用状态。 可以是COMPONENT_ENABLED_STATE_ENABLED,COM​​PONENT_ENABLED_STATE_DISABLED或COMPONENT_ENABLED_STATE_DEFAULT之一。 最后一个意味着组件的启用状态基于清单中的原始信息,如ComponentInfo中所示。 所以它不仅是启用/禁用,还是“默认”。 这个问题 如果返回“COMPONENT_ENABLED_STATE_DEFAULT”,我如何知道它是默认为启用还是禁用(在运行时)? 这个问题的原因是无论人们放入清单中的内容(“启用”属性),代码都应该有效。 是否有可能使用意图解决?

ApplicationInfo和PackageInfo之间的区别?

我有几个关于ApplicationInfo和PackageInfo类的一般问题。 他们来了: 有人可以描述ApplicationInfo和PackageInfo之间的区别吗? 它们如何相互关联? 在哪些情况下使用ApplicationInfo以及何时使用PackageInfo? 感谢您的帮助! 编辑: 首先,在发布这样的问题之前,我已阅读官方文档并用Google搜索。 以下是一些我不清楚的其他问题。 对不起,也许我没有恰当地问他们: PackageInfo可以具有NULL值的ApplicationInfo对象。 什么时候可能? (我想这与已卸载的软件包有关) ApplicationInfo包含应用程序的uid。 PackageInfo可能没有uid(当ApplicationInfo为null时)。 所以这些问题。 我不明白这些联系。

在android中获取所有已安装应用的图标

我想获取所有已安装应用的图标。 我可以使用包管理器获取该图标吗? 它有什么function吗? 或者以任何其他方式获取位图中所有已安装应用的图标? 谢谢!

PackageManager.getInstallerPackageName()可以告诉我我的应用是从亚马逊app store安装的吗?

我计划在亚马逊应用程序商店和Google Play上发布我的应用程序,并且我的应用程序中有些东西需要根据应用程序是否是从Amazon应用程序商店安装而略有不同。 如果我正确理解了PackageManager.getInstallerPackageName(String packageName)方法,它会告诉我安装我的应用程序的应用程序的名称。 对? 如果是这样,有人知道如果我的应用程序是从亚马逊应用程序商店安装的,那么此方法返回的值是多少? 如果没有,有没有人知道我可以用来确定我的应用程序是否是从亚马逊应用程序商店安装的任何其他方法? 注意:我知道有关Stack Overflow的其他问题已经回答了使用PackageManager.getInstallerPackageName(String packageName)来确定安装我的应用程序的应用程序的名称。 但是,搜索Stack Overflow和其他地方,我无法确定PackageManager.getInstallerPackageName(String packageName)返回的值是否是从Amazonapp store安装应用程序的情况。

如何将Gradle依赖项更新到其最新版本

是否有一种简单的方法可以让gradle更新其最新可用版本的依赖项? 为了构建可重现性,我的build.gradle文件中的所有依赖项都使用这样的版本号定义: dependencies { compile ‘namespace:package1:version’ compile ‘namespace:package2:version’ compile ‘namespace:package3:version’ } 我想定期将每个包更新到最新版本。 通常这是我在发布后为新冲刺做的第一件事。 对于每个包,手动执行此操作真的很痛苦。 理想情况下,我想要一个命令为我更新build.gradle文件,但至少一个命令打印出哪个包需要更新以及最新的版本号是什么。 在ruby land我会运行bundler update。