我在android中使用隐式意图进行文件编辑有一个问题,它已经解决了,它需要花费大量的时间和排列和组合来解决它,但最后我仍然怀疑,问题得到解决但我的任务知道解决问题的原因尚未解决。
如果您对此有任何疑问,请告诉我。
来我的问题。
我有一项活动。我在活动中有一个Button。我想打开存储在“/mnt/sdcard/xxx/log.txt”位置的预先存在的日志文件(文本文件示例log.txt)
以下是我写的隐式意图代码,最后我发现了一个例外情况“找不到活动”
code1:我尝试了并获得了异常
Uri uri = Uri.parse("file:///sdcard/xxx/log.txt");
Intent viewTestLogFileIntent = new Intent(Intent.ACTION_EDIT,uri);
viewTestLogFileIntent.setType("text/plain");
code2:我尝试了并获得了异常
Uri uri = Uri.parse("file:///sdcard/xxx/log.txt");
Intent viewTestLogFileIntent = new Intent(Intent.ACTION_EDIT);
viewTestLogFileIntent.setData(uri);
viewTestLogFileIntent.setType("text/plain");
code3:我尝试过并正常工作
Uri uri = Uri.parse("file:///sdcard/xxx/log.txt");
Intent viewTestLogFileIntent = new Intent(Intent.ACTION_EDIT);
viewTestLogFileIntent.setDataAndType(uri,"text/plain");
我有两个疑问是
首先我的文件位于/mnt/sdcard/xxx/log.txt这个我可以清楚地看到eclipse的DDMS视图中的文件系统,但是当我给出文件链接时它是如何工作的在uri中为“file:///sdcard/xxx/log.txt”,其中我从路径跳过/ mnt
code1和code2有什么问题? 什么是我在code3中设置的数据和类型我设置相同的数据和类型的意图,但分别使用不同的方法,如setData()和setType()。为什么他们(code2& code1)不工作?为什么code3有效?
答案 0 :(得分:9)
请参阅课程setType(String type)
中方法Intent
的Javadoc:
...
此方法会自动清除之前设置的所有数据(例如,通过setData(Uri))。
...
答案 1 :(得分:0)
如果要同时设置URI和MIME类型,请不要调用setData()和setType(),因为它们都会使另一个的值无效。始终使用setDataAndType()来设置URI和MIME类型。