我有一个网络应用程序通过iframe意图在android上调用本机应用程序,根据以下内容在chrome 25中不起作用....
https://developers.google.com/chrome/mobile/docs/intents
意图的结构如下......
应用://的RequestType =测试和安培;类型= 123&安培; TN = 0000000000
在新的intent://方案中,我如何将app://之后列出的参数传递给本机应用程序?我找不到一个例子。
答案 0 :(得分:53)
使用新方案,您可以将参数作为附加内容传递给App,但您必须按如下方式对URI进行编码:
<a href="intent://whatever/#Intent;scheme=myapp;package=com.what.ever.myapp;S.myextra=mystring;end">Do Whatever</a>
这将传递一个名为“myextra”的额外String,其值为“mystring”。看一下Android Code,我们可以看到需要如何编码额外的参数。 “myextra”参数开头的“ S ”将其定义为String。其他类型可以是:
String => 'S'
Boolean =>'B'
Byte => 'b'
Character => 'c'
Double => 'd'
Float => 'f'
Integer => 'i'
Long => 'l'
Short => 's'
例如,如果我们想传递两个额外的参数,一个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>
请注意,您需要对所有参数进行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!!
}
当然,在您的清单中添加过滤器 android.intent.category.BROWSABLE ,如this link所示。
答案 1 :(得分:6)
对于方案网址:
appname://RequestType/?Type=123&tn=0000000000
您可能希望映射到以下目标网址:
intent://RequestType/?Type=123&tn=0000000000#Intent;scheme=appname;package=com.example.appname;end
答案 2 :(得分:3)
您无法再使用iframe和自定义协议打开原生应用。
然而,您可以使用现有的intent:// syntax来启动和意图传递数据,如果没有安装,则可以将用户带到Play商店。
您可以在文档的“路径”部分对数据进行编码,这样您就可以拥有intent://play/?a=1#Intent;......;end;
,或者可以将其编码为Extra。
答案 3 :(得分:3)
4.4.4之后意图不起作用,所以这就是我为我的应用做的事情。
使用以下intent过滤器
创建自定义方案以在AndroidManifest.xml中启动我的活动1)
<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="<<YOUR UNIQUE SCHEME(I SUGGEST YOUR PACKAGE NAME)"/>
</intent-filter>
2) 使用后备网址构建市场网址,通过上面创建的自定义方案打开您的应用。
market://details?id=<<your app package from AndroidManifest.xml>>&url=<<your app custom scheme from AndroidManifest.xml>>://yourdomain.com?encoded(p1=v1&p2=v2....etc)
如果您的应用未安装,则会打开商店,如果已安装应用,则会使用已解码的参数打开带有目标数据的应用。
希望这有帮助