问题描述
我尝试在当前打开的应用程序中使用branch.io链接打开一个新活动。 以下代码有效。 这里的问题是浏览器已打开,这将调用新活动。
Intent actionIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://sample.test-app.link/foo"));
startActivity(actionIntent);
我知道浏览器会访问branch.io的网站,获取数据并调用其他链接,例如intent://....
我正在寻找一种从Web链接( https
)获取意图链接( intent://
)的方法。
谢谢!
1楼
解决方案是启用App links
并在链接设置中添加SHA256指纹。
在您的应用中,您应该设置一个新的意图过滤器以获取http请求。
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="https" android:host="xxxx.test-app.link" />
</intent-filter>
现在您的应用程序接收并处理了链接,将不会打开浏览器。
这些步骤进行了描述。
2楼
Branch SDK的设计不便于从应用程序自己的Web视图路由回应用程序。 就是说,这听起来好像您已经做了一些工作,这真是太好了。
关于抓取从“分支”链接创建的Intent字符串的最简单方法:在安装了该应用的设备上,将“分支”链接粘贴到Chrome地址栏中,然后按Enter。 目的字符串将同时出现在地址栏中和出现在结果网页上的错误中。
这样可以检索意图字符串,因为Chrome不支持通过这样在地址栏中输入意图字符串来打开应用程序。
3楼
我认为您可以通过以下步骤来实现:
在活动意图过滤器下的清单文件中:
<data android:host="example.com" android:scheme="http" ></data>
现在,您的可点击链接应该类似于:
在活动中,您可以纠正代码以根据URL进行任何条件
Uri data = getIntent().getData();
if(data!=null) {
List<String> params = data.getPathSegments();
String first = params.get(0); // "status"
String second = params.get(1);
}