是否可以从HTML中添加额外的可浏览意图

时间:2016-08-08 14:36:52

标签: android extras browsable

让我们说下面的清单:

<intent-filter>
    <data scheme="myscheme"
          host="myhost">
    </data>
    <action name="android.intent.action.VIEW">
    </action>
    <category name="android.intent.category.DEFAULT">
    </category>
    <category name="android.intent.category.BROWSABLE">
    </category>
</intent-filter>

我可以通过将浏览器重定向到:

来启动在上述intent过滤器下声明的活动
myscheme://myhost?param1=param1&param2=param2

然而,我正在努力理解是否可以进行相同的重定向,只需要以编程方式接收的附加内容:

myextra = getIntent().getStringExtra('myextra')

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

将数据直接从网页传递到您的应用的唯一方法是在intent-filter中注册的网址。所有要通过Uri对象检索 - 无论数据是在路径上还是在查询参数上,如下所述。无法通过网页在Intent上设置附加内容。

Uri uri = getIntent().getData();
String param1Value = uri.getQueryParameter("param1");

答案 1 :(得分:0)

这是我克服这个问题的方法,

我开发了自己的浏览器并像你一样可浏览

Uri data = getIntent().getData();

if(data == null) { // Opened with app icon click (without link redirect)
    Toast.makeText(this, "data is null", Toast.LENGTH_LONG).show();
}
else { // Opened when a link clicked (with browsable)
    Toast.makeText(this, "data is not null", Toast.LENGTH_LONG).show();
    String scheme = data.getScheme(); // "http"
    String host = data.getHost(); // "twitter.com"
    String link = getActualUrl(host);
    webView.loadUrl(link);
    Toast.makeText(this,"scheme is : "+scheme+" and host is : "+host+ " ",Toast.LENGTH_LONG).show();
}

我认为你正在寻找这个功能

  

data.getQueryParameter(String key);

答案 2 :(得分:0)

可以使用“意图方案网址”,以便在通过javascript或HTML重定向到自定义意图方案网址时发送更多信息,例如额外的对象和操作。

intent://foobar/#Intent;action=myaction1;type=text/plain;S.xyz=123;end

虽然这个方法实际上没有回答问题,因为方案部分注定总是“意图”,但这是一种从具有额外对象或动作的浏览器发送意图的可能方式。

请参阅以下报告中的更多信息:

  

http://www.mbsd.jp/Whitepaper/IntentScheme.pdf

或使用chrome文档:

  

https://developer.chrome.com/multidevice/android/intents