Articles of android package managers

在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。

Android:如何获取已安装活动的列表,因为它们出现在启动器中,没有重复项

我正在编写一个应用程序,允许用户查看已安装的应用程序列表,选择其中一个,然后按计划启动它。 使用stackoverflow中的教程,我设法弄清楚如何获取已安装活动的列表,它们的包名称和图标(即这里 – 几种方法)。 以防万一,这就是我开始活动的方式,它完美无瑕,没问题: Intent launchIntent = packageManager.getLaunchIntentForPackage(packageName); launchIntent.setAction(Intent.ACTION_MAIN); launchIntent.addCategory(Intent.CATEGORY_LAUNCHER); launchIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(launchIntent); 问题是检索已安装的应用程序列表。 我find了两种方法来获取已安装的应用程序列表: 1)使用 PackageManager pm = getPackageManager(); List apps = pm.getInstalledApplication(PackageManager.GET_META_DATA) 从apps每个元素,您可以获得它的包名和包标签(应用程序名称)。 2)使用 PackageManager pm = getPackageManager(); Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); List resolveInfos = packageManager.queryIntentActivities(mainIntent, 0); for(ResolveInfo info : resolveInfos) { ApplicationInfo applicationInfo = info.activityInfo.applicationInfo; //… //get package name, […]

如何从Android的另一个应用程序资源更改主题?

我知道有一种方法来设置主题,通过在styles.xml中定义并使用它 setTheme(android.R.style.MyTheme); 不过,我想从我开发的另一个应用程序获取主题。 我知道资源名称,实际上我能够获得这个代码块的主题ID; Resources res = getPackageManager().getResourcesForApplication("com.example.theme"); int resThemeId = res.getIdentifier("my_theme","style","com.example.theme"); 当我debugging时,我看到resThemeId不是零。 然后,我需要最后的命令来设置这个主题。 在super.onCreate()函数之前,我试图实现这个方法,但似乎不工作 setTheme(resThemeId); 但是,而不是这个,如果我写下面的声明,我工作正常 setTheme(android.R.style.Theme_Holo_Light); 那么,我应该怎么做才能使用来自不同软件包资源的主题呢?

在Android 4.2+上使用intent安装apk时启用降级

在Android 4.2+上使用intent安装apk时可以启用降级function吗? 我发现,通过命令shell(使用-d) adb install -r -d <link to apk>安装应用程序时,有可能通过Intent来实现。 我正在寻找一些国旗或什么的,但我没有find任何有用的东西。 这是我打算打开包安装程序的意图: Intent intent = new Intent(Intent.ACTION_VIEW); Uri applicatonFileUri = Uri.fromFile(applicationFile); intent.setDataAndType(applicatonFileUri, PACKAGE_TYPE); startActivity(intent);