2012-03-08 53 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