我在我的应用程序中设置了一个文件“导入 - 导出”过程(使用 gmail 客户端),允许用户在彼此之间甚至只是在设备之间共享 kml 文件。请阅读用户所经历的步骤以最好地理解。
归档过程:
1) 用户将地标添加到地图。
2) 用户使用用户定义的名称将 kml 格式的地标保存在 /sdcard 上(比如说“Saved.kml”)。
3) 用户通过 gmail 附件“导出”Saved.kml。
处理中的文件:
1) 用户将 gmail 附件保存到设备上的下载文件夹。
2) 用户选择“导入 KML”并从列表中选择 Saved.kml。
3)一切都很完美!地标出现在地图上,就像导出/预期的一样!
除了一个主要缺陷...这仅在您使用相同的设备进行导入/导出时才有效。我有两个设备;Nexus 7 和 LG Motion,它在其中任何一个上都运行良好。但我无法让它在两者之间发挥作用,我开始感到非常沮丧。这是我尝试过的:
清单更改:
android:sharedUserId="com.xxx.xxx"
android:sharedUserLabel="@string/sharedUserLabel"
Runtime.getRuntime().exec("chmod 444 Saved.kml"); //(需要支持Android 4级)
甚至在解析 Saved.kml 之前尝试过这个 -- importFileIn.renameTo(importFileOut); 并且文件被重命名但仍然无法解析。
adb shell 显示:-rw-rw-r-- root sdcard_rw 867 2013-02-28 10:39 Saved.kml -rw-rw-r-- root sdcard_rw 867 2013-02-28 11:44 SavedRenamed.kml
我使用了“adb push”,它在推送的文件上显示了完全相同的用户 ID/权限,但仍然无法加载。
当我发现这一点时,我正处于发布前的最后一分钟测试阶段。在同一台设备上进行测试从来没有一个问题......请帮忙。