我正在尝试使用以下链接下载.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>
答案 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
。这与您的网址不符。