我可以通过浏览器的HTML页面链接广播自定义意图吗?
我想在广播我的自定义意图,当我点击我的HTML页面从浏览器的链接。我知道Android系统会为此播放“android.intent.action.VIEW”,我可以在我的应用程序中收到这个,但这样做会列出我的应用程序的每个可点击的链接,所以我想广播我的自定义意图操作。我可以通过浏览器的HTML页面链接广播自定义意图吗?
我已经按照
创建的test.html文件,这个单行
<a href="intent://example.com/test?id=12345#Intent;scheme=myapp;package=com.mypackage;end">Open Your Application Directly</a>
这里解决了这个"example.com/test?id=12345"
可以是你想要的,这将在我们在我们的onCreate()
传递的意图数据的任何事情方法,所以我给了例如身份证。
"scheme"
可我们需要写相同的方案在我们menifest.xml的意图过滤
"package"
任何字符串为您的应用程序包的名称从其他应用程序具有相同的方案
注意区别开来:如果应用程序没有安装设备,然后它会打开谷歌Play商店中从给出有效的软件包名称
在AndroidMenifest.xml文件
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<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="myapp" />
</intent-filter>
您可以为我为启动程序活动提供的任何活动添加意图过滤器 请注意<data android:scheme="myapp" />
方案名称必须与之前的HTML文件中给出的相同。
完成!打开您的设备的任何浏览器中的HTML文件&点击链接,它会直接打开您的应用程序。
您可以在活动的onCreate()
方法获取数据的意图像
Intent intent = getIntent();
if (intent != null && intent.getData() != null) {
Uri data = intent.getData();
String path = data.getPath();
String id = data.getQueryParameter("id");
Log.d("ID", ": " + id);
}
我要广播我的自定义的意图时,我从浏览器中单击我的HTML页面 的链接。
您可以通过两种方式来完成,具体选择取决于您的使用案例。
- 创建
<intent-filter>
打开选定的链接(网站链接) - 改变你的网站上链接到
<a href="intent://...>
第一种方法让你灵活地离开您的网站的链接,这是,它也将有助于在deeplinking和AppIndex。第二种方法将使您更改网站中的所有链接。
我知道Android系统将播出“android.intent.action.VIEW”为 这一点,我可以在我的申请得到这一点,但这样做会列出我的每一个可点击的链接 应用程序,所以我想我的广播 自定义意图操作。
它不会列出您网站上每个可点击链接的应用程序,它只会为您的网站链接打开您的应用程序。如果你不想这样做,只打开你的网站的特定链接的应用程序,你应该使用上面的方法2。
第二mehtod只是注意
确保实现后备网址,通过Google
的建议当意图无法得到解决,或外部应用程序可以 不那么用户将被重定向到回退URL (如果有)。
链接应该是这样的
<a href="intent://scan/#Intent;scheme=zxing;package=com.google.zxing.client.android;S.browser_fallback_url=http%3A%2F%2Fzxing.org;end">
通知的S.browser_fallback_url
为后备