Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Phát video MP4 trong WebView Android bằng HTML5

Để WebView Android phát video MP4 từ file cục bộ (assets), cần cấu hình Content Provider để WebView truy cập file qua scheme content:// thay vì file:// (bị hạn chế quyền).

1. Khai báo Content Provider trong AndroidManifest.xml

<provider
  android:name="MyDataContentProvider"
  android:authorities="com.myapp"
  android:exported="false"
  android:grantUriPermissions="true" />

2. Implement Content Provider (openFile)

public class MyDataContentProvider extends ContentProvider {
  @Override
  public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
    // uri ví dụ: content://com.myapp/video.mp4
    String fileName = uri.getLastPathSegment(); // "video.mp4"
    File file = new File(getContext().getFilesDir(), fileName); // hoặc assets
    // Nếu file trong assets, cần copy ra filesDir trước
    return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
  }
  // ... các method bắt buộc khác (query, insert, update, delete, getType) return null
}

3. Load video trong WebView

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
webView.loadUrl("content://com.myapp/video.mp4"); // hoặc file HTML nhúng video

Lưu ý quan trọng

  • Android 7.0+ (Nougat) bắt buộc dùng FileProvider thay vì ContentProvider tùy chỉnh cho file:// URI.
  • Dùng FileProvider từ androidx.core.content.FileProvider để an toàn và đơn giản hơn.
  • Video MP4 phải được encode tương thích (H.264 Baseline/Main/High, AAC audio).

Mã trong bài gốc chỉ là đoạn trích, không hoàn chỉnh. Trên là giải pháp đầy đủ, hiện đại cho Android 7+.