在Android中获取原始.APK文件的名称

时间:2015-04-27 17:04:13

标签: java android apk android-applicationinfo

我试图弄清楚如何获取安装了应用程序的原始.apk文件的名称。我知道您可以使用ApplicationInfo类(此处描述:Android: how to get the name of apk file programmatically?)检索已安装应用程序的软件包名称和源目录,但这不是我想要的。

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

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

1 个答案:

答案 0 :(得分: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
}

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