Android 如何使内部文件在蜂巢上可读?
我正在尝试将视频文件从内部存储器加载到视频视图。我从服务器下载这些视频文件,然后使用以下代码将其存储在本地:Android 如何使内部文件在蜂巢上可读?,android,Android,我正在尝试将视频文件从内部存储器加载到视频视图。我从服务器下载这些视频文件,然后使用以下代码将其存储在本地: FileOutputStream out = openFileOutput(filename, Context.MODE_WORLD_READABLE); 这里的文档:使我相信这些文件将被创建为世界可读的,但我不认为这是真的 以下是我用于将文件加载到ViewView中的代码: videoView.setVideoPath(getFilesDir() +"/"+ filename);
FileOutputStream out = openFileOutput(filename, Context.MODE_WORLD_READABLE);
这里的文档:使我相信这些文件将被创建为世界可读的,但我不认为这是真的
以下是我用于将文件加载到ViewView中的代码:
videoView.setVideoPath(getFilesDir() +"/"+ filename);
这是我从DDMS得到的输出:
ERROR/MediaPlayer(4264): error (1, -2147483648)
ERROR/MediaPlayer(4264): Error (1,-2147483648)
DEBUG/VideoView(4264): Error: 1,-2147483648
如果我更改代码以从原始资源目录加载相同的视频,那么一切都会正常运行。但是,我需要能够下载这些视频并在本地播放
是我使用外部数据的唯一选择,还是有办法将内部数据公开给像VideoView这样的东西?下面重复评论中的Commonware解决方案,因为这是我最终使用的解决方案:
请注意,如果您不喜欢
VideoView
的界面,可以始终使用MediaPlayer
和SurfaceView
。或者,使用openFile()
实现一个简单的ContentProvider
,以返回FileDescriptor
,并使用content://
Uri和VideoView
-Commonware您尝试过外部存储吗?如果不是,为什么不呢?因为内部存储通常是有限的。这个应用程序基本上有一个很大的数据文件,里面充满了视频和图像,我们不能把它们放在应用程序本身,因为市场上对.apk文件的大小有限制。我们只下载一次数据,我想内部存储会更持久。我们只针对使用此应用程序的蜂窝平板电脑。您验证过getFilesDir()+“/”+文件名实际上指向新创建的文件吗?您还可以发布您的videoView代码吗?请注意,如果您不喜欢videoView
的界面,您可以始终使用MediaPlayer
和SurfaceView
。或者,使用openFile()
实现一个简单的ContentProvider
,以返回FileDescriptor
,并将内容://
Uri与视频视图一起使用。