2010-08-01 32 views
5

Tôi đã tạo một ứng dụng tải trang web bằng cách sử dụng WebView. Mọi thứ hoạt động tốt ngoại trừ việc tôi không thể phát bất kỳ tệp video nào trong ứng dụng. Vì vậy, những gì tôi đang tìm kiếm giúp đỡ là nhận được ứng dụng của tôi để khởi chạy mediaplayer khi tôi nhấp vào một liên kết kết thúc bằng .mp4. Bất kỳ trợ giúp và mẹo nào sẽ được đánh giá cao!khởi chạy mediaplayer khi nhấp vào liên kết trong WebView

+0

Bạn có muốn sử dụng trình phát đa phương tiện của riêng mình trong ứng dụng (lớp MediaPlayer.java SDK) hoặc bạn muốn khởi chạy trình phát phương tiện mặc định của hệ thống không? –

Trả lời

5

Bạn cần phải ghi đè lên các phương pháp shouldOverrideUrlLoading của webViewCient của bạn ...

final class MyWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.endsWith(".mp4") { 
      Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url)); 
      view.getContext().startActivity(intent); 
      return true; 
     } else { 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    } 
} 

... mà bạn gán cho webview của bạn:

WebViewClient webViewClient = new MyWebViewClient(); 
webView.setWebViewClient(webViewClient); 

Edit: cũng rất quan trọng mà bạn thêm:

webView.getSettings().setAllowFileAccess(true); 

để cho phép tải xuống/tải xuống tệp chẳng hạn như mp 4 tệp.

+0

Cảm ơn bạn đã phản hồi nhanh! Tôi đã thêm mã vào ứng dụng của tôi và nó biên dịch mà không có lỗi .. Nhưng nó vẫn không tải mediaplayer khi liên kết được nhấp. – Kyle

+0

Thêm webView.getSettings(). SetAllowFileAccess (true); Điều đó có thể giúp bạn. Tôi chỉ thử nó trong mã của tôi và nó hoạt động. –

+0

Hey Mathias, Cảm ơn bạn rất nhiều vì sự giúp đỡ của bạn! Tôi đã có thể làm cho nó hoạt động trên Emulator. Tôi đã cố gắng tải ứng dụng trên điện thoại của mình chạy phiên bản 2.2 và nó khởi chạy trình duyệt web và sau đó đóng, đưa tôi quay lại ứng dụng của tôi. Không có video nào cả. Tôi không thực sự chắc chắn những gì có thể sai, khác hơn là tôi đang chạy Emulator trên 1.5. Bạn nghĩ sao? – Kyle

2

Lưu ý: bạn có thể cũng muốn đặt loại dữ liệu. Điều này dường như giải quyết một số vấn đề trong Android 4.0 (Ice Cream Sandwich). Ví dụ:

Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(url), "video/*"); 
startActivity(intent);` 
+0

nhờ nó đã giúp tôi –

Các vấn đề liên quan