• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

获取安装的应用程序的APK

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

我正在寻找一种方法来解压安装的Android应用程序的APK文件,而无需root权限。

第一感觉是没有root权限的情况下,这是不可能的,因为非系统APP的所有APK文件都位于/data/app中,并且访问此文件夹需要root权限。但是,我发现Google Play中有很多应用程序,即使在non-rooted设备上也可以访问APK文件。

有人能告诉我这是否可能的吗?在没有root的情况下,难道没有备份应用程序APK的备份文件夹吗?

最佳解决方法

没有根权限, 访问/data/app是可能的;该目录上的权限是rwxrwx--x。对目录有执行权限意味着你可以访问它,但是缺少读取权限意味着你无法获得其内容的列表 – 所以为了访问它,你必须知道你将要访问的文件的名称。 Android的包管理器会告诉你给定包的存储apk的名字。

要从命令行执行此操作,请使用adb shell pm list packages获取已安装软件包的列表并找到所需的软件包。

通过包名称,我们可以使用adb shell pm path your-package-name获取APK的实际文件名和位置。

而且知道完整的目录,我们就可以使用adb pull full/directory/of/the.apk

在Lollipop下,apk路径将是/data/app/your-package-name-1/base.apk

次佳解决方法

Android会在程序包名称后附加一个序列号以产生最终的APK文件名(这可能会因Android OS的版本而异)。以下命令序列可在没有root权限的设备上工作:

  1. 获取所需软件包的APK文件的完整路径名称。

    adb shell pm path com.example.someapp
    

    这将输出为:package:/data/app/com.example.someapp-2.apk

  2. 将APK文件从Android设备拖到开发框中。

    adb pull /data/app/com.example.someapp-2.apk
    

第三种解决方法

Google Play商店中有一个名为”Apk extracter”的应用程序。通过这个应用程序,你可以得到安装应用程序的.apk文件。

第四种方法

不需要ROOT权限即可获取已安装的应用程序列表。

可以使用Android PackageManager来做到这一点。

下面是一个小的代码片段。

final PackageManager pm = getPackageManager();
//get a list of installed apps.
List<ApplicationInfo> packages =  pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    Log.d(TAG, "Installed package :" + packageInfo.packageName);
    Log.d(TAG, "Apk file path:" + packageInfo.sourceDir);
}

参考文献

  • Get APK of installed app


鲜花

握手

雷人

路过

鸡蛋
专题导读
上一篇:
词的向量表示(Tensorflow word2vec)发布时间:2022-05-14
下一篇:
如何在jupyter Notebook中包含图像或图片?发布时间:2022-05-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap