如何在安卓系统中通过编程找到应用程序的存储位置

3

我想查找应用程序是安装在外部存储还是内部存储中?这行代码只返回应用程序的路径:

String path = p.getApplicationInfo(info.packageName, 0).sourceDir;

感谢您的信任。以下是您需要翻译的内容:

预先感谢

例如,我希望这样:

Skype 内部存储

4个回答

2
这将为您提供设备上安装的应用程序(.apk)文件列表 -
adb shell pm list packages -f

我设备列表中的一些 -

package:/system/framework/framework-res.apk=android
package:/system/app/MusicPickerActivity.apk=com.MusicPickerActivity
package:/system/app/Kindle.apk=com.amazon.kindle
package:/system/app/BackupRestoreConfirmation.apk=com.android.backupconfirm
package:/system/app/Browser.apk=com.android.browser
package:/system/app/Calculator.apk=com.android.calculator2
package:/system/app/Calendar.apk=com.android.calendar
package:/system/app/CertInstaller.apk=com.android.certinstaller
package:/system/app/ChromeWithBrowser.apk=com.android.chrome
package:/system/app/Contacts.apk=com.android.contacts
package:/system/app/DefaultContainerService.apk=com.android.defcontainer
package:/system/app/DeskClock.apk=com.android.deskclock
package:/system/app/Email.apk=com.android.email

列出包含myapp-关键词的已安装软件包:

adb shell pm list packages | grep myapp

命令行输出:

package:com.myapp.main

显示应用程序myapp的安装目录:

adb shell pm path com.myapp.main

命令行输出:

package:/data/app/com.myapp.main-2.apk

注意:如果您的应用程序使用内部存储,则会创建一个唯一的文件夹,只能从您的应用程序访问。其他应用程序无法查看其中的内容。但是,外部存储就像公共文件夹一样。

SD卡上的应用程序详情请参阅。


我有文件列表。我只想开发一个应用程序,它将显示已安装应用程序的列表,并针对每个应用程序显示其存储位置。例如: Skype 内部存储 - Hammad Shahid

0
List packs = packageManager.getInstalledPackages(0); //PackageManager.GET_META_DATA
  for(int i=0; i < packs.size(); i++) {

     PackageInfo p = packs.get(i);
     ApplicationInfo a = p.applicationInfo; 
     // skip system apps if they shall not be included
     if ((!includeSysApps) && ((a.flags & ApplicationInfo.FLAG_SYSTEM) == 1)) {
        continue;
     }
     App app = new App();
     app.setTitle(p.applicationInfo.loadLabel(packageManager).toString());
     app.setPackageName(p.packageName);
     app.setVersionName(p.versionName);
     app.setVersionCode(p.versionCode);
     CharSequence description = p.applicationInfo.loadDescription(packageManager);
     app.setDescription(description != null ? description.toString() : "");
     apps.add(app);

  }

0
我是这样做的:
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo appInfo : packages)
{
   String storage = null;
   String appStorage = applicationStorage(appInfo);
   if(appStorage.startsWith("/data/"))
   {
      storage = "Internal";
   }
   else
   {
      storage = "SD Card";
   }
}

2
applicationStorage()?? - Narendra Singh

-3

android:installLocation="internalOnly"

android:installLocation="preferExternal"

android:installLocation="auto"

安卓:installLocation =“internalOnly”

安卓:installLocation =“preferExternal”

安卓:installLocation =“auto”


您可以根据上述自行选择安装应用程序。 - Rauf
我想找到已安装应用程序的存储位置。 - Hammad Shahid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接