android - 为什么当 setData() 和 setType() 不工作时,android intent 的 setDataAndType() 工作正常?

标签 android

我在使用隐式 Intent 在 android 中编辑文件时遇到了一个问题,它已经解决了知道,它花了很多时间和排列组合来解决它,但最后我仍然有疑问,问题已经解决了但是我的追求知道解决了的问题为什么没有解决。

如果您对此有任何线索,请告诉我。

来到我的问题。

  1. 我有一项 Activity 。我在 Activity 中有一个按钮。我想打开存储在“/mnt/sdcard/xxx/log.txt”位置的预先存在的日志文件(这是一个文本文件示例 log.txt)

  2. 下面是我写的隐式 Intent 代码,我以异常“找不到 Activity ”结束

代码 1:我尝试过但出现异常

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");

我有两个疑惑是

  1. 首先,我的文件位于/mnt/sdcard/xxx/log.txt 中,我可以在 eclipse 的 DDMS View 中的文件系统中清楚地看到它,但是当我提供文件链接时它是如何工作的在 uri 中作为“file:///sdcard/xxx/log.txt”,其中我从路径中跳过了/mnt

  2. code1 和 code2 有什么问题? 我在 code3 中设置的数据和类型是什么我正在设置相同的数据和类型,但分别使用不同的方法,如 setData() 和 setType()。为什么它们(代码 2 和代码 1)不工作?为什么 code3 有效?

最佳答案

请查看类Intent中方法setType(String type)的Javadoc:

...
此方法会自动清除之前设置的任何数据(例如通过 setData(Uri))。
...

关于android - 为什么当 setData() 和 setType() 不工作时,android intent 的 setDataAndType() 工作正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13719471/

相关文章:

android - 解析 json,其中字段可以有两种不同类型的 gson 或 jackson

java - ConcurrentModificationException java.util.ArrayList$Itr.next

具有共享首选项的 Android 登录/注册

android - "An internal error occurred"与 Google Plus 登录的集成

android - 在后台振动电话

android - Android 上的 Soundfonts

java - WakeLock并不总是释放

android - 失败 [INSTALL_FAILED_UPDATE_INCOMPATIBLE] 后跟 DELETE_FAILED_INTERNAL_ERROR

android - 在 Android 中获取像素颜色

java - Android 如何从自定义创建的 View 中获取 TextView 引用 id?