当用户打开网站时,我希望发生以下两种情况之一:
案例1很简单,您可以使用以下代码:
window.location = "mycoolapp://";
如果应用程序安装在设备上,这将有效。未安装应用程序时,它会将用户重定向到未知的空白页面。
对于案例2,我有一个使用iFrame的解决方案,它在iOS和原生Android浏览器上运行良好。它不适用于Android版Chrome。
var redirect = function (location) {
var iframe = document.createElement('iframe');
iframe.setAttribute('src', location);
iframe.setAttribute('width', '1px');
iframe.setAttribute('height', '1px');
iframe.setAttribute('position', 'absolute');
iframe.setAttribute('top', '0');
iframe.setAttribute('left', '0');
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
iframe = null;
};
redirect('mycoolapp://');
安装该应用后,它正在使用原生Android浏览器,但在Chrome for Android上没有重定向。页面上没有任何反应。
如何在没有安装应用的情况下重定向到我在Chrome for Android上运行的应用,而无需重定向到空白页?
编辑:我知道你可以使用Intent
window.location = "intent://#Intent;package=com.mycoolapp;scheme=mycoolapp;launchFlags=268435456;end;";
这不是我想要的,因为如果未安装该应用,它会在Google Play上启动应用页面。有没有办法不会重定向到Google Play?
答案 0 :(得分:4)
您不需要在自定义协议上启动您的应用。它适用于任何地址,例如在AndroidManifest.xml
:
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:host="www.mycoolapp.com" />
<data android:scheme="http" />
<data android:pathPattern="/Android" />
</intent-filter>
这意味着您可以使用以下方式指导用户:
window.location = "/Android";
如果安装了该应用,Android将提示“打开方式”。如果没有,用户将被带到浏览器中的/ Android页面。
答案 1 :(得分:2)
Add this in manifest file,note the scheme.
<intent-filter>
<data android:scheme="startci" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
在html中给出代码,方案与清单文件中的方案相同。
<a href="intent:#Intent;scheme=startci;package=gramener.star;end">click here</a>
如果您想为您的应用添加参数,请使用此
<a href="intent:#Intent;scheme=startci://open?url_param=hi santhosh;package=gramener.star;end">click here</a>
如果未安装该应用,那么如果您想重定向到其他某个页面,请添加此类备用网址。网址必须编码
<a href="intent:#Intent;scheme=startci://open?url_param=hi santhosh;package=gramener.star;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end">click here</a>
将参数添加到代码
下面 Uri data = this.getIntent().getData();
if (data != null && data.isHierarchical()) {
if (data.getQueryParameter("url_param") != null) {
String param = data.getQueryParameter("url_param");
Log.d("the param is",param);
//do something here
}
}