2012-03-08 51 views
12

在谷歌的开发文档开发指南(http://developer.android.com/guide/market/expansion-files.html#ZipLib)部分的底部,有以下文字。SampleZipfileProvider类在哪里?

APEZProvider - 大多数应用程序不需要使用这个类。这个 类定义了一个ContentProvider,它将来自ZIP 文件的数据通过内容提供者Uri进行编组,以便为​​期望Uri访问媒体文件的某些Android API提供文件访问 。在Apk扩展包中提供的 示例应用程序演示 这种类别可用于指定具有 VideoView.setVideoURI()的视频。有关如何将此类扩展为 在您的应用程序中使用的示例,请参阅示例应用程序的类 SampleZipfileProvider。

有问题的示例应用程序不包含此类。但它确实包含对AndroidManifest.xml中的.SampleVideoPlayerActivity文件的引用,该文件不存在于项目中。

有没有人试图根据APEZProvider实现一个具体的类,并与VideoView.setVideoURI()一起使用?

我已经实现了类:

public class ZipFileContentProvider extends APEZProvider { 

    @Override 
    public String getAuthority() { 
     return "com.myCompany.myAppName.provider.ZipFileContentProvider"; 
    } 
} 

但我不知道如何与VideoView.setVideoURI()呼叫时使用。谁能帮忙?

回答

26

原来我的ZipFileContentProvider就足够了。对于那些遇到这个问题。这是我为VideoView.setVideoURI()方法使用内容提供者所做的。

向Manifest添加提供商。

<provider android:authorities="com.myCompany.myAppName.provider.ZipFileContentProvider" android:name=".ZipFileContentProvider"></provider> 

在视频播放器类:

final String AUTHORITY = "com.myCompany.myAppName.provider.ZipFileContentProvider"; 
final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY); 
video = (VideoView) findViewById(R.id.video); 
video.setVideoURI(Uri.parse(CONTENT_URI + "/" + videoFileName + ".mp4")); 
+0

我找不到SampleZipfileProvider无论是。我不知道你的答案是如何工作的,但确实如此;谢谢! – Blundell 2012-04-18 12:25:12

+4

我想补充一点,如果你的文件在zip文件夹内(就像我的文件一样),你需要在路径中包含它。例如Uri.parse(CONTENT_URI +“/ MyFolder /”+ videoFileName +“.mp4”) – dnorcott 2013-02-27 21:09:25

+0

你是我的英雄!像Blundell一样,我不知道它是如何工作的,但它确实如此,我会拿它:D 谢谢! +1 – 2013-07-15 22:49:13