嗨,我必须在Android应用程序和浏览器之间建立连接。因此,当点击浏览器上的按钮时,它应该重定向到Android应用程序。在我写的android活动中
Uri data = getIntent().getData();
if (data.equals(null)) {
System.out.println("Data is null");
} else {
String scheme = data.getScheme();
System.out.println(scheme);
String host = data.getHost();
int port = data.getPort();
List<String> params = data.getPathSegments();
String first = params.get(0); // "hello"
System.out.println(first);
并且在清单中我已经给出了
<intent-filter>
<data android:scheme="Integration" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
在html上点击按钮我已经<FORM METHOD="LINK" ACTION="Integration://1">
它正在抛出indexoutofboundexception。 请告诉我哪里出错了
更新 * 我在活动中不必要地使用意图。通过删除html5中的n参数,我的应用程序现在正在成功运行。 *
答案 0 :(得分:1)
引用答案:How to listen for a custom URI
要在Android应用中注册协议,请在AndroidManifest.xml中添加一个额外的块
我修改了一些代码,但我认为我也引用了源代码
<manifest>
<application>
<activity android:name=".activityToCall">
<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="scheme" android:host="path"/>
</intent-filter>
</activity>
</application>
</manifest>
然后,当打开与您的架构匹配的网址时,我会调用您的应用来处理它。
考虑到scheme
和path
对应于此:
scheme://host/path
之后,在清单中设置的活动中处理这些内容:
Uri data = getIntent().getData();
if (!data.equals(null)){
String scheme = data.getScheme();
//Or whatever you needed
}