如何在chrome上的新方案中将参数传递给android Intent?

use*_*024 23 iframe mobile android google-chrome android-intent

我有一个网络应用程序通过iframe意图在android上调用本机应用程序,根据以下内容在chrome 25中不起作用....

https://developers.google.com/chrome/mobile/docs/intents

意图的结构如下......

应用://的RequestType =测试及类型= 123&TN = 0000000000

在新的intent://方案中,我如何将app://之后列出的参数传递给本机应用程序?我找不到一个例子.

ojo*_*ual 56

使用新方案,您可以将参数作为附加项传递给App,但您必须按如下方式对URI进行编码:

<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.myextra=mystring;end">Do Whatever</a>
Run Code Online (Sandbox Code Playgroud)

这将传递一个名为"myextra"的额外String,其值为"mystring".看看Android代码,我们可以看到需要如何编码额外的参数."myextra"参数开头的" S "将其定义为String.其他类型可以是:

String => 'S'
Boolean =>'B'
Byte => 'b'
Character => 'c'
Double => 'd'
Float => 'f'
Integer => 'i'
Long => 'l'
Short => 's'
Run Code Online (Sandbox Code Playgroud)

例如,如果我们想传递两个额外的参数,一个Integer和一个String,我们可以这样做:

<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.name=Perico%20de%20los%20Palotes;i.age=35;end">Do Whatever</a>
Run Code Online (Sandbox Code Playgroud)

请注意,您需要对所有参数进行url编码.

在您的Android应用中,您需要接受这些额外内容.在您的活动的"onCreate"事件中:

Bundle parametros = getIntent().getExtras();
if (extras != null){
    String name = extras.getString("name");
    Integer age = extras.getInt("age");

    if (name!=null && age!=null)
    {
       //do whatever you have to
       //...
    }
}else{
     //no extras, get over it!!
}
Run Code Online (Sandbox Code Playgroud)

当然,在清单中添加过滤器android.intent.category.BROWSABLE,如此链接所示.

  • 谢谢!这是我见过的关于如何将附加内容添加到intent uri的第一个很好的解释. (4认同)
  • 谢谢你的信息。一些额外的注意事项:你可以只使用 `intent:#Intent;...;end`,不需要 `whatever`。该活动需要在意图过滤器中具有“BROWSABLE”和“DEFAULT”类别。`component=` 实际上被忽略了,使用 `package=` 来指定你的包。 (3认同)

Ale*_*exD 6

对于方案URL:

appname://RequestType/?Type=123&tn=0000000000
Run Code Online (Sandbox Code Playgroud)

您可能希望映射到以下目标URL:

intent://RequestType/?Type=123&tn=0000000000#Intent;scheme=appname;package=com.example.appname;end
Run Code Online (Sandbox Code Playgroud)


Kin*_*lan 5

您不能再使用 iframe 和自定义协议来打开本机应用程序。

但是,您可以使用现有的Intent:// 语法来启动和 Intent 并传递数据,如果未安装它,它还有一个额外的好处是将用户带到 Play 商店。

您可以按照文档中的说明在语法的“路径”部分对数据进行编码,以便您可以拥有intent://play/?a=1#Intent;......;end;,也可以将其编码为 Extra。