3

我试图弄清楚如何获取安装应用程序的原始 .apk 文件的名称。我知道您可以使用ApplicationInfo该类检索包名称和已安装应用程序的源目录(此处描述:Android:如何以编程方式获取 apk 文件的名称?)但这不是我想要的。

例如,假设我有一个名为TestApp(通过文件android:label中的标签AndroidManifest.xml)的简单应用程序。此外,假设我为上面的应用程序生成了一个 .apk 文件,将 .apk 文件重命名为TestApp_JohnDoe.apk,然后将该应用程序通过电子邮件发送给 John Doe 进行安装。当 John Doe 通过单击 .apk 文件安装应用程序时,我希望能够读取TestApp_JohnDoe.apk我发送给他的原始 .apk 的文件名。使用ApplicationInfo该类,更具体地说,该sourceDir方法为我提供了安装目录和应用程序名称,/data/app/TestApp.apk这不是我想要的。我知道可能可以扫描所有可用目录以查找原始 .apk 文件,但我希望避免这种情况。

总之,我想以编程方式检索安装程序 .apk 的 .apk 文件名/源目录,例如/storage/sdcard0/Download/TestApp_JohnDoe.apk.apk 文件名/源目录,而不是实际安装的应用程序的 .apk 文件名/源目录/data/app/TestApp.apk

4

1 回答 1

0

如果对您有用,可以让应用程序知道在编译时设置的 apk 名称

applicationVariants.all { variant ->
    // Change the target apk file name and path
    String apk_path = "$rootProject.projectDir/bin"
    String apk_name = "john_doe.apk"
    project.delete(project.apk_path) //Delete any remains
    String apkFile = String.format("%s/%s", apk_path, apk_name)
    variant.outputs[0].outputFile = new File(apkFile)
    // This can be used in Java runtime by using getString(R.string.apk_name)
    resValue "string", "apk_name", apk_name
}

但是您要问的是,我很确定这是不可能的

于 2015-04-27T17:21:05.413 回答