在没有“未知来源”权限的情况下,“ ShareIt”,“ Xender”等如何能够安装APK?


9

通常,如果必须安装apk(例如从SD卡安装),则需要在手机设置中启用“未知来源”。但是,当我使用“ ShareIt”从另一部手机转移并安装任何APK时,我的手机不需要此类许可。

ShareIt如何能够绕过此权限?


是ShareIt预先安装在您的设备上,还是您自己安装了它?
伊齐

Answers:


8

我做了一些挖掘,没有API 21之前的系统许可,就有可能https://developer.android.com/reference/android/content/pm/PackageInstaller.html

实际上,谷歌有一个代码示例显示了如何执行此操作。https://github.com/googlesamples/android-testdpc/blob/master/app/src/main/java/com/afwsamples/testdpc/cosu/CosuUtils.java


挖掘这一点的荣誉,现在查找该应用程序是否实际使用了此...
Andy Yan

2
@beeshyams-并非如此。该应用程序无法执行“静默”安装。通过挂起的意图,在安装时需要用户的明确“单击”。

1
@Neo Damn,所以我在写答案时就假设是无提示安装。
Andy Yan

2
在其他新闻中,ShareIt的软件包似乎有些混乱,因此,即使我的工具在Java代码生成中取得了成功,也无法从存根中看到任何重要信息。
Andy Yan

等等-我使用了另一个工具,我想我可能已经掌握了。验证后,我会将其编辑为您的答案。
Andy Yan

4

如果应用程序是静默安装的(即没有通常的安装对话框),则可能是这些应用程序直接调用pm,即PackageManager作为系统应用程序接受许可android.permission.INSTALL_PACKAGES

手机必须植根,以便应用程序可以pm在根上下文中调用,否则将收到消息“用户xxxx或当前进程都没有android.permission.INSTALL_PACKAGES”。

编辑:正如@Izzy在评论中指出的,android.permission.INSTALL_PACKAGES还授予安装到的应用程序/system。请参阅下面的评论和此SO问题以获取更多信息。


请注意,我并未真正尝试ShareIt并分析其实际作用,只是提出了最可能的理论。如果您没有扎根并且仍然有效,那么我们可能要研究一个更有趣的问题。
Andy Yan

1
@beeshyams在中国这里,许多第三方应用程序市场都会进行无提示或自动安装。第一种方法如此处所述,他们将在首次安装时要求root权限;第二种是要求您打开辅助功能,然后自动单击“安装”按钮。
Andy Yan

1
我的手机没有扎根。而且它也没有要求root权限。但是在印度,ShareIt是一种非常流行的通过点对点安装应用程序的方法。

1
@beeshyams避免使用该应用程序及其所需的权限。考虑改用通过HTTP使用开放源代码共享(在F-Droid上可用)。我绝不隶属于该应用程序。
Grimoire

1
@beeshyams它适用于连接到同一网络的任何设备。据我所知,主机必须是Android,但是任何设备都可以连接到同一网络并访问应用程序中显示的HTTP地址以下载文件。
Grimoire
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.