0

我已經搜索了很多關於此的內容,但未能找到任何內容。我的目標是打開所有帶有視頻文件的URL(從瀏覽器中選擇)。通常情況下,如果所有的URL與視頻IE的文件擴展名結束:www.example.com/wow.mp4我可以只使用這個意圖過濾我的清單:在我的應用程序中打開視頻網址

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <data android:scheme="http"/> 
    <data android:scheme="https"/> 
    <data android:mimeType="video/*"> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
</intent-filter> 

但處處並非如此,某些URL開始,如:

http://www.videoweed.es/mobile/....17da9f11345a424f02a5 

然後重定向到正確的鏈接。我想知道如何使用意圖過濾器攔截這些類型的視頻網址。 MXPlayer實現了此功能。

回答

1

您需要調用HTTPConnection模塊來獲取MIME類型,然後使用MIME類型來啓動活動。 你可以參考下面的代碼部分來獲得mime類型的URL。

你可以參考Android - Detect URL mime type

import java.net.URL; 
import java.net.URLConnection; 

public static String getMimeType(String url) 
{ 
    String mimeType = null; 

    // this is to handle call from main thread 
    StrictMode.ThreadPolicy prviousThreadPolicy = StrictMode.getThreadPolicy(); 

    // temporary allow network access main thread 
    // in order to get mime type from content-type 

    StrictMode.ThreadPolicy permitAllPolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(permitAllPolicy); 

    try 
    { 
     URLConnection connection = new URL(url).openConnection(); 
     connection.setConnectTimeout(150); 
     connection.setReadTimeout(150); 
     mimeType = connection.getContentType(); 
     Log.i("", "mimeType from content-type "+ mimeType); 
    } 
    catch (Exception ignored) 
    { 
    } 
    finally 
    { 
     // restore main thread's default network access policy 
     StrictMode.setThreadPolicy(prviousThreadPolicy); 
    } 

    if(mimeType == null) 
    { 
     // Our B plan: guessing from from url 
     try 
     { 
      mimeType = URLConnection.guessContentTypeFromName(url); 
     } 
     catch (Exception ignored) 
     { 
     } 
     Log.i("", "mimeType guessed from url "+ mimeType); 
    } 
    return mimeType; 
} 
+0

謝謝,但事實並非完整的解決方案。一旦我的應用程序被選爲URL,無論是從接收器還是應用程序本身,如果mimeType不是視頻,那麼我的代碼將會運行,然後我將被打開,但無法處理意圖。任何想法如何通過清單獨自實現? – Aashir 2014-12-03 04:35:02

+0

我認爲現在是一個框架主題,您應該在活動啓動之前處理它,因此需要更改框架以支持此類功能。 – 2014-12-03 15:15:41

+0

想想這樣,我希望我的應用程序處於選擇器對話框中,I.E用於播放視頻。所以我不能讓用戶啓動我的應用程序只發現他選擇了錯誤的鏈接,我的應用程序無法做任何事情。 – Aashir 2014-12-03 17:25:48

相關問題