Android浏览器意图过滤器无效

时间:2016-02-05 00:31:18

标签: android android-intent intentfilter openurl

我正在尝试使用以下链接下载.XM文件。

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" );

有人可以告诉我为什么Intent过滤器不能用于此链接吗?

我已经成功使用了与m3u播放列表等相同的代码和类型的intent过滤器。

更新:

我正在尝试接收任何应用程序/八位字节流链接,我只是无法让我的应用程序通过该链接接收这些意图。我尝试了“http”和“文件”方案,但都没有工作。我删除了所有意图过滤器,所以我现在只有一个(见下文)。为什么这不起作用?

<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 个答案:

答案 0 :(得分:1)

function rebuildJsonDotNetObj(obj) {
    var arr = [];
    buildRefArray(obj, arr);
    return setReferences(obj, arr)
}

function buildRefArray(obj, arr) {
    if (!obj || obj['$ref'])
        return;
    var objId = obj['$id'];
    if (!objId)
    {
        obj['$id'] = "x";
        return;
    }
    var id = parseInt(objId);
    var array = obj['$values'];
    if (array && Array.isArray(array)) {
        arr[id] = array;
        array.forEach(function (elem) {
            if (typeof elem === "object")
                buildRefArray(elem, arr);
        });
    }
    else {
        arr[id] = obj;
        for (var prop in obj) {
            if (typeof obj[prop] === "object") {
                buildRefArray(obj[prop], arr);
            }
        }
    }
}

function setReferences(obj, arrRefs) {
    if (!obj)
        return obj;
    var ref = obj['$ref'];
    if (ref)
        return arrRefs[parseInt(ref)];

    if (!obj['$id']) //already visited
        return obj;

    var array = obj['$values'];
    if (array && Array.isArray(array)) {
        for (var i = 0; i < array.length; ++i)
            array[i] = setReferences(array[i], arrRefs)
        return array;
    }
    for (var prop in obj)
        if (typeof obj[prop] === "object")
            obj[prop] = setReferences(obj[prop], arrRefs)
    delete obj['$id'];
    return obj;
}

此网址的文件扩展名为http://api.modarchive.org/downloads.php?moduleid=50479#ngs_cvrg.xm

.php

<data android:pathPattern=".*\\.xm" /> 的文件扩展名为pathPattern。这与您的网址不符。