Java 通过意图传递文件,如何检索它

Java 通过意图传递文件,如何检索它,java,android,android-intent,Java,Android,Android Intent,这就是我要说的图片文件是一个文件 Intent intent = new Intent (context, ShowPicActivity.class); intent.putExtra("picture", pictureFile); 在下一个活动中,我使用哪一个getter来获取它 Intent-Intent=getIntent()..?请尝试以下操作: YourPictureClass picture = (YourPictureClass)getIntent.getExtras().g

这就是我要说的<代码>图片文件是一个
文件

Intent intent = new Intent (context, ShowPicActivity.class);
intent.putExtra("picture", pictureFile);
在下一个活动中,我使用哪一个getter来获取它

Intent-Intent=getIntent()..?

请尝试以下操作:

YourPictureClass picture = (YourPictureClass)getIntent.getExtras().get("picture");
通过在
Intent
中调用
getExtras()
,可以获得
捆绑包的一个实例

使用class
Bundle
中的普通
get()
,您可以读取传递给调用
Intent
的每个
对象。您唯一需要做的就是将其解析回您的对象是的实例的

文件实现了可序列化的(首先要检查通过意图发送对象。) ()

因此,您可以这样做,只需将结果对象强制转换为文件,如下所示:

File pictureFile = (File)getIntent.getExtras().get("picture");
应该没问题。
(它使用需要可序列化的对象并返回它。强制转换应该足够了。)

您可以这样发送它:

intent.putExtra(“我的文件”,我的文件)

然后像这样检索它:

File myFile=(File)intent.getSerializableExtra(“我的文件”)

但是,,最好(任何人?)以字符串引用的形式发送文件,在这种情况下,您可以通过以下方式发送:

intent.putExtra(“我的文件字符串”,myFile.toString())

然后像这样检索/重构:


File myFile=新文件(intent.getStringExtra(“我的文件字符串”)

不传递文件对象。您最好将URI传递给该文件。您是否在android sdk中的任何地方看到有人通过Intent传递/返回文件对象?URI是android实现这一点的方法。我会试着找一篇文章来解释为什么你不应该这样做。好的,谢谢你,如果这是最好的方式,那么我会这样做的!我只是想知道为什么!因为文件不仅仅是对资源的引用。当您通过intent传递对象时,将创建一个新的副本,我不确定文件的副本在所有用例中都是可行的。如果您需要传递引用,请使用URI,如果您需要在应用程序内共享文件对象,请以其他方式共享它,而不进行序列化。
getSerializableExtra()
是否更合适?