2012-03-08 3 views
12

拡張ファイルに関するGoogleの開発者ガイド(http://developer.android.com/guide/market/expansion-files.html#ZipLib)のセクションの下部に、次のテキストがあります。SampleZipfileProviderクラスはどこですか?

APEZProvider - ほとんどのアプリケーションでこのクラスを使用する必要はありません。この クラスは、メディアファイルへのURIのアクセスを期待して、特定のAndroid APIのファイルアクセス を提供するために、コンテンツプロバイダウリを通じてZIP ファイルからデータをマーシャリングのContentProviderを定義します。 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()メソッドのコンテンツプロバイダを使用する方法について説明します。

マニフェストにプロバイダを追加します。ビデオプレーヤークラスで

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

:私はどちらかSampleZipfileProviderを見つけることができませんでした

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

。私はあなたの答えがどのように働いているのか分かりませんが、それはあります。ありがとう! – Blundell

+4

あなたのファイルがzip内のフォルダにある場合(私の場合のように)、そのファイルをパスに含める必要があります。たとえば、Uri.parse(CONTENT_URI + "/ MyFolder /" + videoFileName + ".mp4") – dnorcott

+0

あなたは私のヒーローです! Blundellのように、私はそれがどのように動作するのかわかりませんが、それを行い、私はそれを取るでしょう:D ありがとう! 1 –

関連する問題