android – 我如何确定该应用程序可以移动到SD卡?

android – 我如何确定该应用程序可以移动到SD卡?,第1张

概述我想确定手机内存和安装上安装的应用程序列表.移动到SD卡. 我正在使用以下功能来获取已安装应用的列表. 我已经检查了InstalledAppDetails的Android源代码,但无法获得解决方案. 谢谢 private List<App> loadInstalledApps(boolean includeSysApps) { List<App> apps = new Arr 我想确定手机内存和安装上安装的应用程序列表.移动到SD卡.
我正在使用以下功能来获取已安装应用的列表.

我已经检查了InstalledAppDetails的Android源代码,但无法获得解决方案.

谢谢

private List<App> loadInstalledApps(boolean includeSysApps)    {       List<App> apps = new ArrayList<App>();       //   the package manager contains the information about all installed apps       PackageManager packageManager = getPackageManager();       List<PackageInfo> 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);           app.setInstallDir(p.applicationInfo.sourceDir);           app.setInstallSize(calculateSize(app.getInstallDir()));           CharSequence description = p.applicationInfo.loadDescription(packageManager);           app.setDescription(description != null ? description.toString() : "");           if(app.getInstallDir().contains("/mnt"))           {               //app on sdcard               apps.add(app);           }           else           {               //app on phone memory               apps.add(app);           }               }       return apps;   }
解决方法 应用安装位置在您应用的AndroIDManifest.xml中指定.看看 here了解更多信息.简而言之:

<manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:installLocation="preferExternal"... >

要么

<manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:installLocation="auto"... >

auto表示应用程序可能安装在外部设备上,但您没有偏好;而preferExternal意味着应用程序将尽可能安装在外部设备上

记住……

If you do not declare this attribute,your application will be
installed on the internal storage only and it cannot be moved to the
external storage.

所以,现在的问题是如何从应用程序中获取androIDManifest.xml文件.好吧,你可以从APK(如果安装后没有删除).对于这个问题,请看一下这篇文章:How to parse the AndroidManifest.xml file inside an .apk package

最后,关于解析xml的一个很棒的主题也可以在这篇文章中找到. Accessing android:installLocation manifest attribute

干杯,阿尔

总结

以上是内存溢出为你收集整理的android – 我如何确定该应用程序可以移动到SD卡?全部内容,希望文章能够帮你解决android – 我如何确定该应用程序可以移动到SD卡?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1126576.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存