安卓INSTALL_PACKAGES权限和非PlayStore应用程序
我正在为Play商店准备我的应用程序,并计划将一个组件作为单独的安装程序包提供(因为我的客户无法恢复源代码,但是该应用程序已使用他的密钥签名).我想到了两种方法.我的需求只是这些:使用"未知来源"停用的用户应该能够安装第二个应用程序.和:用户绝不应重定向到Google Play商店. 两个应用程序都是免费的. 我已经查找了解决方案,可以让我从Google Play下载其他APK,并简单地向用户展示安装屏幕以进行安装.我想要一个解决方案,在这里我向PlayStore应用发送了意图,并显示了应用程序名称,权限和安装按钮.我什么也没找到.有人在这里有任何经验吗? 我认为我可以将此附加应用程序包装到封闭应用程序的资产中.我需要将其写入文件系统,并向系统发送安装软件包的意图.问题:该应用程序没有从Google Play加载,因此它的源尚不清楚.如果我使用PackageManager并让其安装APK,那么权限install_packages是否允许我的应用在用户的设备上安装此第二个
0 2023-05-25
编程技术问答社区
如何以编程方式为一个应用程序设置锁或引脚
现在,我正在尝试为我的小孩开发一个Android应用程序.我想在特定的时间上为选定的应用程序设置PIN或密码,以防止它们打开应用程序.例如,假设我的女儿在工作时想在手机上玩一段时间的愤怒小鸟.我将选择我的重要应用程序,例如消息传递,Gmail等,并在她玩愤怒的小鸟时在30分钟内放置PIN或密码. 30分钟后,我从女儿那里得到手机,我可以在没有PIN的情况下打开该应用程序,因为时间限制已过期. 我已经对此进行了大量研究,但是我还没有为我的特定情况找到实施. Android" App Lock"应用程序如何工作?/p> 我知道应用程序锁具有我想做的类似的结构.我只是为锁定时间限制. https://play.google.com/商店/应用程序/详细信息?id = com.domobile.applock&hl = en 我要远离使用ActivityManager等的杀人活动/申请.我真的只想在特定时间内通过选定的应用程序进行干净的锁定屏幕. 我有一个倒数数来
10 2023-04-08
编程技术问答社区
有没有办法让Android清单中的元数据对软件包保持私有?
我想在Android清单中使用元数据来自定义服务的行为. 我的服务是库的一部分,当他们使用我的服务时,有些人可能会将敏感的数据放在这些属性中.这些元数据属性是否可以通过PackageManager在手机上的其他安装软件包可见,即使该服务未导出? ? 解决方案 即使没有导出服务,这些元数据属性是否可以通过PackageManager在手机上的其他安装软件包可见? 是.清单中的所有内容以及您的资源和资产中的所有内容均可访问设备上的所有应用程序. 其他解决方案 进行了一些测试后,我确认所有元数据字
2 2023-03-26
编程技术问答社区
Android M 反射方法 freeStorageAndNotify 异常
我正在使用反射方法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_C
86 2023-03-03
编程技术问答社区
Xamarin C# for Android:搜索应用程序和路径
目标:我需要查找设备上是否安装了应用程序并找到其路径. 我看到使用PackageManager,您通常可以做到这一点,但我想完善它. 我知道您是否使用com.google.chrome您可以找到已安装的Chrome Explorer, 但是,当您仅查看Chrome. 时,这将失败 在某些设备上Chrome(以及其他应用程序,例如Opera,Mini等)未安装为com.google.chrome. 那么,如何找到一个没有com.google的应用程序,然后将Chrome用作搜索条件? 解决方案 简单,只需组合PackageManager和ApplicationInfo,然后检查应用程序是否包含您的搜索字符串.这是一些示例代码: var searchQuery = "chrome"; var flag = PackageInfoFlags.Activities; var apps = PackageManager.GetInstal
4 2023-02-21
编程技术问答社区
如何检测安卓设备中的新应用
我想检测用户何时安装或删除应用程序,我没有找到它的BroadcastReceiver. 在我的应用中,我通过类PackageManager获取有关已安装的应用程序的信息,但我不想定期扫描应用程序.是否有任何BroadcastReceiver这是什么?或任何ContentObserver?是否可以获得应用程序已安装或删除的通知? 解决方案 您可以使用Intent.ACTION_PACKAGE_ADDED(以及如果需要,以及Intent.ACTION_PACKAGE_REMOVED和/或Intent.ACTION_PACKAGE_CHANGED)注册BroadcastReceiver).例如, void registerReceiver() { IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE
36 2023-01-31
编程技术问答社区
安卓应用程序更新的三角洲更新
我正在尝试将自己的服务器设置为托管APK文件,该文件将在客户端应用程序中安装和更新. 在APK的新版本上,只有更新的部分应该在客户端下载.我能够在服务器端使用"bsdiff"生成修补程序文件.但在客户端,我应该如何使用原始APK合并修补程序文件并安装更新. 解决方案 基于您的问题,看起来您正在寻找某种修补系统.通常谷歌播放商店管理这一点.上传新版本的APK时,它只下载客户端的差异,为客户节省数据.但是,在移动本身上融合了这一点. 由于您不使用Google Play商店,因此唯一可用的方式可能是和fix .可以在此上有一些更多选项其中大多数都需要一些代码更改. 您还可以遵循扩展文件由Google描述.你应该能模仿方法. 注意: Google Play策略如果您虽然在Google Play商店和不使用Google Play的更新机制,请忽略此方法.如果您计划在以后的阶段通过播放商店分发您的应用程序,您需要小心
我怎样才能找到所有具有特定意图过滤器的软件包?
我需要获取所有已安装的软件包的名称,其名称为com.mridang.为了做到这一点,我在以下片段上使用的东西: for (PackageInfo pkgPackage : mgrPackages.getInstalledPackages(0)) { if (pkgPackage.applicationInfo.packageName.startsWith("com.mridang.")) { System.out.println(pkgPackage.applicationInfo.packageName); } } 我只需要获取包含以下意图过滤器的服务的那些软件包的名称com.google.android.apps.dashclock.Extension. 这是示例软件包上的清单文件的片段:
8 2023-01-03
编程技术问答社区
在ART内安装.apk的过程。与Dalvik VM安装过程的区别
最近我回答了这个问题,其中将.apk文件的整个安装过程描述为Android手机.它是关于使用Dalvik VM的一件事.现在我想知道安装过程是否与ART完全相同?有什么区别? 我的意思是 packagemanager , PATH ,转换到dex格式的工作等. Googling并没有给出很多信息,只有关于性能力量,管理内存和类似的东西. 如果有知识的人可以分享这些信息,我会非常感激. 解决方案 Android应用程序来自.apk文件格式,Java类转换为DEX字节码. DEX字节码格式独立于设备架构,需要将要转换为本机代码以在设备上运行.这对于ART和Dalvik运行时,这是相同的. 从Dalvik到ART的最显着变化是Dalvik基于 立即即时 (JIT)编译ART基于 提前的 (AOT)编译. 与 dalvikjit编译器,每次运行应用程序时,它会动态将Dalvik字节码的一部分转换为机器代码.随着执行进展,编译并缓存了更多字节码.另一方面,艺术配备了一系列前提的
54 2022-12-26
编程技术问答社区
同一个APK中的两个包可能吗?
我正在尝试实现在仍然模式_private的同时在两个不同的应用程序中共享首选项. 我的问题是第一个应用程序不能假设安装了第一个应用程序(反之亦然),ov: Context c = createPackageContext("com.app.first", MODE_PRIVATE); 必须替换: Context c = createPackageContext("com.app.shared", MODE_PRIVATE); 但该命令在real中添加了com.app.shared,它转换为第二个apk? 换句话说,只有一个 AndroidManifest.xml per apk和只有一个 每个清单文件.因此,每apk只有一个实际包装? 我不想要每个应用程序2款apks,我只想要每个应用程序的单个apk. 有没有办法实现这一目标? 解决方案 我正在尝试在静止模式_private的同时在两个不同的
28 2022-12-26
编程技术问答社区
是否有可能用付费版本取代现有的安卓免费应用程序?
嗨,我已经制作了一个应用程序免费版本和付费版本. 我想知道,有没有办法,我可以在istallation期间用付费版本替换免费版本. * 考虑此方案 * 用户已经安装了免费版本.现在他想要一些额外的功能,该功能仅在付费版本中提供.因此,他被从应用程序重定向到Google播放,在那里他购买并安装付费版本. 现在他有免费和付费版本,但我们知道他现在只使用付费版本,所以我想知道如何用付费版本替换免费版本. 我知道我可以通过inapp购买来实现这一点,但有没有办法? 如何在安装付费版本时自动卸载或覆盖免费版本? 甚至可能? 如果可能的包装名称是相同或不同的? 解决方案 您不能,不应该用付费版本替换您的免费应用程序. 除非您进行应用程序来解锁免费应用程序,否则最好的实践似乎是创建一个"关键"应用程序,该应用程序解锁了免费应用程序中的功能.此密钥应用程序可以隐藏在应用程序抽屉中,这应该防止通常与有两个应用程序相关的烦恼. 另一个好处是,所有
了解安卓应用是如何被PackageManagerService安装的
所以我一直在挖掘AOSP试图弄清楚如何安装Android应用程序.到目前为止,这就是我在哪里: apk文件将从packageInstallerActivity发送到InstallAppProgress,其中它调用PackAgeManager方法 installpackage(). 上一个调用packagemanager会被引导到packagemanagerservice,用aidl的魔力(花了一些时间让我理解这个). 在核心方法中 installpackagewithverification()创建了package handler的实例,并通过使用init_copy,package_verified等的一堆状态代码以一种强大的方式进行消息传递. 基于处理程序中收到的消息的状态代码进行操作.要从 init_copy开始 - 将包添加到待挂安装的列表中,并用代码 mcs_bound 调用消息. 此复制从APK文件中提取的基本文件,如数据文件. 和在车道中的
什么是Lollipop上的 "PackageInstaller "类,以及如何使用它?
背景 我注意到packagemanager上有一个名为" getPackageInstaller ",Minapi 21(棒棒糖). 我到达了" packageinstaller "类,这就是它写的: 提供安装,升级和删除应用程序的能力 设备.这包括支持作为单个包装的应用程序 "单片"APK,或作为多个"拆分"APKS的应用程序. 应用程序通过a提供安装 packageinstaller.session,任何应用程序都可以创建.一旦会议 是创建的,安装程序可以将一个或多个APKS流式传输到位 它决定提交或销毁会话.犯下5月 要求用户干预完成安装. 会话可以安装全新的应用程序,升级现有应用程序或添加新的应用程序 分成现有应用程序. 问题 这个课程是什么?它甚至可用于第三方应用程序(我没有看到这一点)吗? 它真的可以安装应用程序吗? 它在背景中做到了吗? 有什么限制? 它是否需要权限?如果是的话,哪个? 是有没有如何使用它的教程? 解
24 2022-12-26
编程技术问答社区
安卓:从安卓代码中获取APK的minSdkV版本
我正在开发一个Android应用程序,如果用户需要它,那么能够安装其他应用程序(作为应用程序的插件). 但是,这些附加应用程序中的每一个都可能需要特定的Android版本运行.我想在运行时执行检查,看看我尝试安装的APK是否实际上与设备兼容. 现在,具有以下方法: public PackageManager getPackageArchiveInfo(String archiveFilePath, int flags) 我可以在apk文件上获取信息.然而,问题是返回的信息似乎仅包括APK的targetSdkVersion但不是minSdkVersion,而不是我的理解,它是实际确定可以安装/运行应用程序的最低版本的Android版本. targetSdkVersion如果我理解正确只是"最佳"版本. 所以,长话短说,我如何确定APK CNA是否从Android本身运行? (我知道我可以在桌面上使用AAPT,但在Android本身上不可用) 解决方案 你可以
76 2022-12-26
编程技术问答社区
从apk文件中获取minSdkV版本和targetSdkV版本
我正在尝试从存储在设备上的APK中获取minSdkVersion和targetSdkVersion的值.获取其他详细信息是讨论的这里,但只有 targetsdkversion 在ApplicationInfo类中可用.可以通过提取APK文件和读取Androidmanifest.xml来获取minSdkVersion,以外获得? 解决方案 我不相信这是可以自己做的,并且没有预先制作的API.读取和解析AndroidManifest的当前方法根本不考虑minsdkversion. 为了检查您的APK文件而无需使用Ready所做的功能,您最终需要手动将其添加到资产管理器中.并且该方法标有"不适合应用程序",这在我的经验中通常意味着从应用程序调用它并不是一个好主意. http://androidxref.com/5.1.1_r6/xref/frameworks/base/core/java/android/content/res/assetmanager.java#612
32 2022-12-26
编程技术问答社区
"如何将 "安卓应用程序(Facebook等)安装到安卓手机上?
我知道如何将应用程序安装到Android设备,例如 play-em>或通过 .apk 文件.但是我想了解安装的实际过程. 例如.在Windows上: 串行代码等放置在注册表中 对软件运行很重要的文件放置在 program文件文件夹中( .exe> et.)) 到目前为止,我对Android应用程序安装过程的了解是: 执行了Android应用程序(安装后)后,将新下载的数据放置在以下位置: android/data 或 android/obb 等. 如果由Android开发人员专门表示,则文件也可以放置在其他地方,例如辅助存储(存储卡,云存储等) 但是,除此之外,我关于Android安装过程的知识很小,例如: 我不知道放置了与Android程序执行有关的重要文件(在Windows的情况下, .exe ,相关媒体,库等) 我同样不知道这些文件是如何在Android设备(后安装)上构造的,例如这些文件是否在以下文件夹中构成: java , re
2 2022-12-26
编程技术问答社区
在安卓上以编程方式安装APK
我一直在尝试获取一个Android应用程序以编程为SDCARD上安装APK,但我遇到了一些麻烦. 这就是我的做法: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType("ApkFilePath...","application/vnd.android.package-archive"); activity.startActivityForResult(intent,5000); 现在正常工作,它带来了包装管理器,我可以控制经理完成安装APK时该做什么. 但是,我遇到的问题是,如果在安装结束时,用户单击"打开"而不是"完成"" onActivityResult"方法,因为经理仍然存在.这在系统上的另一个要求上提出了另一个问题. 有没有办法知道何时在软件包管理器的末尾选择了"打开",或者有没有办法强迫管理器仅显示我要显示的按钮? 真的可以使用帮助,我
42 2022-12-26
编程技术问答社区
如何在不使用文件或文件路径的情况下获得文件系统中的APK文件信息(不仅仅是已安装的文件)?
背景 我的应用程序(作为Android Q上范围存储功能的一部分,Google宣布SAF(存储访问框架)将替换普通存储权限.这意味着,即使您尝试使用存储权限,它也只能授予访问用于使用或完全沙箱的文件和文件路径的特定类型的文件(写于这意味着许多框架需要依靠SAF而不是文件和文件路径. 问题 其中之一是 packageinfo ,我可以获得有关: 的各种信息 名称(在当前配置上),又称"标签",使用packageInfo.applicationInfo.loadLabel(packageManager).这是基于设备的当前配置(位置等...) 软件包名称,使用packageInfo.packageName 版本代码,使用packageInfo.versionCode或packageInfo.longVersionCode. 版本号,使用packageInfo.versionName App图标,使用各种方法,基于当前配置(密度等等...): a. Bitm
10 2022-12-26
编程技术问答社区
在解析软件包时有一个问题,安卓?
我已经制作了这个应用程序,我现在一直在测试一段时间. 当我完成时,我把它放在市场商店上,它都很好,但现在是一个新的版本,而不是改变清单,当我试图安装它时,它会在手机上给我一个错误: 解析包有问题. 我之前没有问题,但为什么现在为什么? 解决方案 此错误发生在我身上,几个时间通过清洁Eclipse清理项目来解决它.按项目/清洁 我有时必须在构建包之前清洁和重启Eclipse.希望这件事有所帮助.
12 2022-12-09
编程技术问答社区