在Google的扩展文件开发指南(http://developer.android.com/guide/market/expansion-files.html#ZipLib)部分的底部,有以下文字。
APEZProvider - 大多数应用程序不需要使用此类。这个 class定义了一个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()
电话中使用它。有人可以帮忙吗?
答案 0 :(得分:27)
事实证明我的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"));