Android:提供商测试用例2和getFilesDir()

时间:2012-12-10 07:14:57

标签: android android-contentprovider

我的部分应用程序涉及将png文件保存到本地文件目录,然后通过内容提供商共享。

我通过getContext().openFileOutput

写文件

但是,在我的内容提供商中,ParcelFileDescriptor只会打开实际的File对象。因此,尝试通过使用ProviderTestCase2的模拟内容提供程序执行此操作,以下代码不起作用:

return ParcelFileDescriptor.open(new File(getContext().getFilesDir(), filename), ParcelFileDescriptor.MODE_READ_ONLY)

这是因为context.getFilesDir()在通过/dev/null代码提供给提供者的模拟上下文中指向ProviderTestCase2。上面的代码导致异常,因为/dev/null不算作目录。这是按预期的吗?

1 个答案:

答案 0 :(得分:0)

这听起来像个笑话......文档说:

  

返回文件系统上目录的绝对路径,其中存储使用openFileOutput(String,int)创建的文件。

但IsolatedContext源是这样的:

@Override
public File getFilesDir() {
    return new File("/dev/null");
}

因此我们最好忽略该方法并尝试使用

@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();

在测试中。