3 回答
TA贡献1712条经验 获得超3个赞
预安装的应用程序位于/system/app文件夹中。用户安装的应用程序位于中/data/app。我想除非您拥有一部扎根的手机,否则您将无法访问。我的手机没有root,但可以尝试以下代码:
public class Testing extends Activity {
private static final String TAG = "TEST";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
File appsDir = new File("/data/app");
String[] files = appsDir.list();
for (int i = 0 ; i < files.length ; i++ ) {
Log.d(TAG, "File: "+files[i]);
}
}
它确实列出了我扎根的htc魔术和e中的apk。
TA贡献1875条经验 获得超3个赞
您可以使用包管理器(pm)adb shell列出包:
adb shell pm list packages | sort
并显示.apk文件的位置:
adb shell pm path com.king.candycrushsaga
package:/data/app/com.king.candycrushsaga-1/base.apk
并adb pull下载apk。
adb pull data/app/com.king.candycrushsaga-1/base.apk
TA贡献1773条经验 获得超3个赞
没有标准位置,但是您可以使用PackageManager查找有关软件包的信息,并从中获取ApplicationInfo类,其中包含有关特定软件包的各种信息:其.apk的路径,其数据目录的路径,该路径到仅用于资源的.apk(用于向前锁定的应用程序)等。请注意,根据您与其他应用程序的关系,您可能会或可能没有权限读取这些目录;但是,所有应用程序都可以读取资源.apk(这也是非前向锁定应用程序的真实.apk)。
如果您只是在外壳中闲逛,则当前非前向锁定的应用程序位于/data/app/.apk中。Shell用户可以读取特定的.apk,尽管它无法列出目录。在将来的发行版中,命名约定将稍有更改,因此不要指望它保持不变,但是如果您从包管理器中获取.apk的路径,则可以在外壳中使用它。
- 3 回答
- 0 关注
- 699 浏览
添加回答
举报