2016-02-05 37 views
0

我正在嘗試使用以下鏈接來下載.XM文件。Android Browser Intent Filter will not Work

http://api.modarchive.org/downloads.php?moduleid=50479#ngs_cvrg.xm 

這裏是我的清單片段:

<application 
     <activity 
... 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
         <intent-filter> 
          <action android:name="android.intent.action.VIEW" /> 
          <action android:name="android.intent.action.EDIT" /> 
          <category android:name="android.intent.category.DEFAULT" /> 
         <data android:mimeType="application/octet-stream" /> 
         <data android:host="*" /> 
       <data android:pathPattern=".*\\.xm" /> 
         </intent-filter> 
         <intent-filter> 
          <action android:name="android.intent.action.VIEW" /> 
          <action android:name="android.intent.action.EDIT" /> 
          <category android:name="android.intent.category.DEFAULT" /> 
          <data android:mimeType="application/mytestapp" /> 
          <data android:host="*" /> 
       <data android:pathPattern=".*\\.xm" /> 
         </intent-filter>    
      <intent-filter> 
       <action android:name="android.intent.action.VIEW" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:scheme="file" /> 
       <data android:pathPattern=".*\\.xm" /> 
       <data android:host="*" /> 
       <data android:mimeType="text/plain"/> 
      </intent-filter>    
      <intent-filter> 
         <action android:name="android.intent.action.VIEW" /> 
         <category android:name="android.intent.category.DEFAULT" /> 
         <category android:name="android.intent.category.BROWSABLE" /> 
         <data android:scheme="http" /> 
         <data android:mimeType="*/*" /> 
         <data android:pathPattern=".*\\.xm" /> 
         <data android:host="*" /> 
        </intent-filter>    
        </activity> 

下面是我的代碼片段未被稱爲:

@Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
    CheckForBrowserActivation(); 
    } 


    public void CheckForBrowserActivation() 
    { 
    Intent intent = getIntent(); 
    String sData = intent.getDataString(); 
    ContextActivity.LogDebugf("Intent [%s] Data[%s]\n", intent.getAction(), sData); 

    if(Intent.ACTION_VIEW.equals(intent.getAction())) 
    { 
     ContextActivity.LogDebugf("BROWSER, ACTION_VIEW\n"); 

有人可以告訴我爲什麼意向過濾器不適用於此鏈接?

我已經成功了意圖過濾器的相同的代碼和類型M3U播放列表等工作

UPDATE:

我想現在接受任何應用程序/八位字節流的鏈接和我做不到讓我的應用程序接收這些鏈接的意圖。我已經嘗試了「http」和「file」方案,但都沒有工作。我已經刪除了所有的意圖過濾器,所以我現在只有一個(見下文)。爲什麼這不工作?

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE" /> 
    <data android:scheme="http" /> 
    <data android:host="*" />    
    <data android:mimeType="application/octet-stream" /> 
</intent-filter> 

回答

1
http://api.modarchive.org/downloads.php?moduleid=50479#ngs_cvrg.xm 

該URL的文件擴展名是.php

<data android:pathPattern=".*\\.xm" /> 

這個pathPattern的文件擴展名是.xm。這與您的網址不符。

+0

謝謝。這是否意味着我應該過濾我的應用程序中的所有.php URL,然後在完整的URL中查找.xm? – SparkyNZ

+0

@ SparkyNZ:那麼,對於'http'和'https'方案來說,這是可行的。但是,用戶可能會感到困惑,試圖確定您聲稱爲什麼要處理所有PHP頁面。不幸的是,您的測試網址不會爲此請求提供不同的MIME類型,這基本上意味着您的所有選項都很糟糕。 – CommonsWare

+0

當然,必須有另一種截取.XM文件下載的方法嗎?這對於iOS來說非常簡單。在iPhone上,我註冊了XM文件類型,並且此鏈接觸發了一個openURL方法。我只是想在Android上獲得相同的結果。 – SparkyNZ