我使用了installLocation,可以确定是否可以移动应用程序。但是,当我们想知道某个应用程序是否已移至SD卡时,我无法弄清楚会发生什么。
ApplicationInfo
属性FLAG_EXTERNAL_STORAGE
仅告知您应用是否已安装到SD,如果已移至该应用。我正在生成可以移动到SD卡的应用程序列表。因此,我生成的第一个列表正在使用清单的installLocation
。从这个列表中我可以过滤掉已经移动到SD卡的应用程序。
答案 0 :(得分:2)
要检查应用程序是否安装在SD卡中,请执行以下操作:
ApplicationInfo io = context.getApplicationInfo();
if(io.sourceDir.startsWith("/data/")) {
//application is installed in internal memory
} else if(io.sourceDir.startsWith("/mnt/") || io.sourceDir.startsWith("/sdcard/")) {
//application is installed in sdcard(external memory)
}
答案 1 :(得分:0)
如果您的安装位置是自动的,您可以将应用程序从SD卡移动到手机,反之亦然。您可以在设备应用程序管理器中手动检查应用程序位置。
答案 2 :(得分:0)
假设this question (and its accepted answer)可以提供帮助。
简而言之:getApplicationInfo()。sourceDir,为documented here。