本文概述
大多数Android应用程序应使用户能够选择应用程序的安装位置。我的意思是, 没有人可以购买具有64GB内部存储空间的上一代设备。我们中有些人需要购买SD卡来扩展设备支持的尺寸。
但是, 对于某些应用程序, 此功能意义不大。例如, 如果你有应用程序小部件, 动态壁纸或其他类型的服务或实用程序应用程序(例如文件管理器), 则在移除SD卡后, 你的应用程序将无用。无论如何, 在这种情况下, 你正在寻找如何启用此功能, 这意味着你知道要执行的操作不是吗?
要求
我们需要修改AndroidManifest.xml文件, 但是我们不会手动进行修改。这不是一个好习惯, 因为每次构建项目时, 所做的更改都会丢失。
相反, 我们将使用cordova-custom-config插件, 该插件可让你从config.xml文件中修改AndroidManifest.xml文件而不会出现问题。要安装插件, 请在命令行中执行以下命令:
cordova plugin add cordova-custom-config
# Or phonegap
phonegap plugin add cordova-custom-config
在此处的官方资料库中了解有关插件的更多信息。
实现
通常, 对于每个默认的cordova应用程序, 此功能都被禁用:
幸运的是, 要启用此功能, 你只需向AndroidManifest.xml文件添加一个属性。使用cordova-custom-config插件(该插件可让你在cordova应用程序的config.xml文件中使用自定义配置块), 你需要在config.xml文件中的<platform =” android”>标签内添加以下行:
<!-- Note that needs to be inside the android config -->
<platform name="android">
<!-- Modify the android-manifest block and add the new property android:installLocation with value auto !-->
<preference name="android-manifest/@android:installLocation" value="auto" />
</platform>
该值设置为”自动”, 以便用户可以决定将应用程序安装在何处。如果此值根本不存在, 则默认行为是仅允许安装到内部存储中, 而不给用户选择。其他可能使用的值是” internalOnly”(与没有此设置的行为相同), 以及” preferExternal”(如果可用且有可用存储空间, 则将首先在SD卡上安装应用程序)。
最后尝试使用cordova run android构建你的应用程序。现在应该启用该功能, 并且你的用户我们将能够将你的应用移至SD卡。
信息
请注意, 随着Android 6.0 Marshmallow的引入, 这些功能不再可用, 因此请不要担心如果你在Galaxy设备上进行测试, 并且该功能不起作用, 因为在这种情况下没有任何帮助。
但是, 构建目标必须至少更新为API级别8(Android 2.2), 否则你将收到类似错误的错误:软件包” android”中找不到属性” installLocation”的资源标识符。
在某些Android 6.0棉花糖设备(Nexus)中, 用户可以轻松移动它。玩得开心