如何配置codenameone项目以安装在Android的外部存储中

时间:2019-04-03 06:25:08

标签: codenameone android-permissions

我正试图将我的codenameone应用程序安装到外部存储中,所以我不需要root权限即可调试写入存储的内容,因为即使在模拟器中也无法在Android上运行。

首先,我假设仅在codename1.arg.android.installLocation=preferExternal中加入codenameone_settings.properties即可,但是即使将installLocation从auto更改为preferredExternal,应用程序仍会安装到内部存储中。

因此,我认为也许需要对quoteExternal进行引号,然后继续使用引号(=\"preferExternal\")-这在构建服务器上产生了清单生成错误,该清单显示了带有双引号的清单,因此原始文件是正确的表格。

从错误报告中,我看到了

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="false" />

所以我认为也许可能需要这样做才能实际安装到外部存储器。我尝试像文档中建议的那样将codename1.arg.android.permission.WRITE_EXTERNAL_STORAGE=true添加到属性文件中,但是在清单合并中失败了:

  

合并结果:ERROR   /tmp/build6786351350686020379xxx/happy2/src/main/AndroidManifest.xml:48:7-69错误:       元素在AndroidManifest.xml:49:5-81处使用了permission#android.permission.WRITE_EXTERNAL_STORAGE与在AndroidManifest.xml:45:5-106中声明的元素重复   /tmp/build6786351350686020379xxx/happy2/src/main/AndroidManifest.xml错误:       验证失败,正在退出

好,所以我认为它总是包含在内,因此我只需要将所需设置更改为true,然后按照文档中的说明在属性中添加codename1.arg.android.permission.WRITE_EXTERNAL_STORAGE.required=true即可。这样就可以构建,但是实际的权限未设置为android:required="true",但仍为false。

使用android.xpermissions标签插入想要的行<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="true" />确实会将其插入到清单,但是清单构建器给出并出错,因为默认的错误行也仍然存在:

  

合并结果:ERROR   /tmp/build5902390972256151175xxx/happy2/src/main/AndroidManifest.xml:48:3-103错误:       元素在AndroidManifest.xml:48:3-103处使用了permission#android.permission.WRITE_EXTERNAL_STORAGE与在AndroidManifest.xml:45:5-106中声明的元素重复   /tmp/build5902390972256151175xxx/happy2/src/main/AndroidManifest.xml错误:       验证失败,正在退出

所以问题仍然存在,如何配置一个codenameone项目以安装在Android的外部存储中

1 个答案:

答案 0 :(得分:0)

查看此android:installLocation="preferExternal" not working

要点是,您的应用程序的某些部分将始终安装在隐藏区域中,并且存储可能会放在该区域中。

如果您想将内容写入SD卡,则可以使用FileSystemStorage API来做到这一点,该API允许您写入任意根目录。您可以检测到SDCard根,然后在其中写入。我建议您在模拟器中进行调试,尽管您可以在.cn1目录中轻松查看存储内容。