I'm trying to get the path of my current running apk on android. I'm using System.getProperty("user.dir"). But it gives out a "/", which is the root directory of the Android system. Am i missing something?
As the documentation says, the user.dir
property is the user working directory, which is not necessarily the same as the directory where your apk is placed.
Anyway, the List<ApplicationInfo> PackageManager.getInstalledApplications()
will give you a list of the installed applications, and ApplicationInfo.sourceDir
is the path to the .apk
file.
Here's some sample code:
PackageManager pm = getPackageManager();
for (ApplicationInfo app : pm.getInstalledApplications(0)) {
System.out.println("SourceDir: " + app.sourceDir);
}
The above will give you the sourcepath for all the installed apks.
The example is taken from here .
Your apk is located at /data/app/<your_package_name>
after installation on the internal memory. This path is consistent across Android, and you don't need to use System
.
Check the Context class. The functions you want are:
and so forth.
The ApplicationInfo class is your answer:
PackageManager pm = getPackageManager();
for (ApplicationInfo app : pm.getInstalledApplications(0)) {
if (app.packageName.equals(appPackage) { Log.i( app.sourceDir); }
}
Hope that sorts you.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.