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,如此链接所示.
对于方案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)
您不能再使用 iframe 和自定义协议来打开本机应用程序。
但是,您可以使用现有的Intent:// 语法来启动和 Intent 并传递数据,如果未安装它,它还有一个额外的好处是将用户带到 Play 商店。
您可以按照文档中的说明在语法的“路径”部分对数据进行编码,以便您可以拥有intent://play/?a=1#Intent;......;end;,也可以将其编码为 Extra。
| 归档时间: |
|
| 查看次数: |
26946 次 |
| 最近记录: |