我在我的应用程序中设置了一个文件“导入 - 导出”进程(使用gmail客户端),允许用户在彼此之间或甚至仅在设备之间共享kml文件。请阅读用户所了解的步骤以便最好地理解。
文件输出过程:
1)用户将地标添加到地图中
2)用户使用用户定义的名称在/ sdcard上以kml格式保存地标(假设为“Saved.kml”)。
3)用户通过gmail附件“导出”Saved.kml。
正在处理的文件:
1)用户将gmail附件保存到设备上的“下载”文件夹中
2)用户选择“导入KML”并从列表中选择Saved.kml
3)一切都很完美!地标在地图上显示为导出/预期!
除了一个主要缺陷...这仅在您使用相同设备进行导入/导出时才有效。我有两个设备; Nexus 7和LG Motion在它们中的任何一个都很棒。但我无法让它在两者之间发挥作用,我开始变得非常沮丧。 这是我尝试过的:
明显的变化:
机器人:sharedUserId = “com.xxx.xxx”
机器人:sharedUserLabel = “@串/ 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 /权限,仍然无法加载。
当我发现这个时,我刚刚在发布前的最后一分钟进行测试。 在同一设备上进行测试从来没有一个问题......请帮助。
答案 0 :(得分:0)
对不起伙计, 通过Stack Overflow提出这个问题让我输入了我一直在思考的所有内容,最后让我相信这不是文件权限问题。通过使用Log.i我打印出异常,发现这实际上是一个“找不到文件”错误。这当然是完全不同的事情!路径错误,问题解决了! 感谢您对我的耐心。
答案 1 :(得分:0)
更具体地说是试图提供帮助:
我从设备“下载”文件夹中的文件中提取数据。
在Nexus 7上,这是:“/ storage / emulated / 0 /下载“。
在LG Motion上这是:”/ sdcard / Download“。
通过使用”root.getAbsolutePath()+“/ download”我的问题得到了解决。