1

パックされた Web で作業していますが、オーディオ タグを使用しようとすると問題が発生します。

私のコードでは、コンテンツ プロバイダーからフィードされた WebView があります。

wv.loadUrl("content://content_provider/web_page");

コンテンツ プロバイダーでは、WebView が必要とするファイルを提供するために、メソッド「openAssetFile」をオーバーライドします。しかし、タグを使用すると、プログラムがファイルを要求することはありません。

また、メソッド「loadDataWithBaseURL」を使用して html コードを挿入しようとしましたが、「content://」カスタム プロトコルを使用してパスをハードコーディングしましたが、機能しません。

ビデオタグを使用すると、ファイルを要求するのに適切に機能するため、非常に奇妙です。他のコンテンツも適切に機能します。

4

1 に答える 1

0

これは古い質問ですが、他の場所でこれに対する回答が見つからなかったため、参照用にここに解決策を投稿しています。

何らかの理由で、mp3 ファイルの webView (MediaPlayer を使用する) からコンテンツ プロバイダーを呼び出すと、openAssetFile が呼び出されず、openFile が呼び出されます。(プロバイダーがこのルーティングを処理するかどうかは不明です)。この問題は 4.2+ で修正されたようです

私にとってうまくいった古いバージョンの解決策は、コンテンツプロバイダーで openFile を次のようにオーバーライドすることでした。

@Override
public AssetFileDescriptor openAssetFile(Uri uri, String mode){
    //your asset reading code that works for other file types here.
}
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode){
    try {
        AssetFileDescriptor afd = openAssetFile(uri, mode);
        return afd.getParcelFileDescriptor();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    return null;
}

これは、Android 4.04および4.1で機能します

于 2013-09-17T10:36:04.947 に答える