【发布时间】:2016-05-31 12:41:44
【问题描述】:
当我从浏览器单击我的 html 页面的链接时,我想广播我的自定义意图。我知道 android 系统会为此广播“android.intent.action.VIEW”,我可以在我的应用程序中接收它,但这样做会为每个可点击链接列出我的应用程序,所以我想广播我的自定义意图操作。
【问题讨论】:
当我从浏览器单击我的 html 页面的链接时,我想广播我的自定义意图。我知道 android 系统会为此广播“android.intent.action.VIEW”,我可以在我的应用程序中接收它,但这样做会为每个可点击链接列出我的应用程序,所以我想广播我的自定义意图操作。
【问题讨论】:
我已经通过关注解决了这个问题
用这一行创建 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() 方法中作为意图数据传递,所以我给出了例如id。
"scheme" 可以是我们需要在我们的 menifest.xml 中为意图过滤器编写相同方案的任何字符串
"package" 是您的应用程序包名称,以区别于其他具有相同方案的应用程序
注意:如果应用程序未安装在设备中,那么它将从给定的有效包名称打开 google playstore
在 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 文件并单击链接,它将直接打开您的应用程序。
您可以在 Activity 的 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。
只是对第二种方法的说明
确保按照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 以作为后备
【讨论】: