有没有办法从我自己的应用程序扫描其他应用程序的.apk文件而无需root访问权限?应该有,因为有APK Extractor之类的应用程序可以让你获得任何已安装应用程序的.apk。最好的事情是,APK Extractor不需要root访问权限。
我尝试使用ProcessBuilder
并调用命令pm list packages
来获取已安装的软件包,然后我运行pm path com.package.name
以获取每个.apk的路径。我得到了有效的路径但是当我尝试使用File apkFile = new File(apkPath);
打开它时,我得到了
java.io.FileNotFoundException: /data/app/some.app.package/base.apk
open failed: ENOENT (No such file or directory)
这基本上意味着我没有权利阅读该文件。
答案 0 :(得分:1)
我在另一个问题here is direct link to answer in another thread找到了解决方案。
我也在这里为懒人复制了答案。
- 首先,您将获得所有已安装的应用程序
- 对于每一个,获取公共源目录。
- 将文件复制到SD卡。
醇>注意:无需扎根。
这是snippt代码:
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); final List pkgAppsList = getPackageManager().queryIntentActivities(mainIntent, 0); for (Object object : pkgAppsList) { ResolveInfo info = (ResolveInfo) object; File file = new File(info.activityInfo.applicationInfo.publicSourceDir); // Copy the .apk file to wherever }
答案 1 :(得分:0)
如果您想要访问此APK,则需要SU访问权限。阅读更多here。 如果只是使用普通手机,Android OS会因为安全原因不允许您访问其他APK。此外,你确定用户实际上已经在手机上安装了其他APK吗?