0

嗨,我必须在 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 参数,我的应用程序现在可以成功运行。*

4

1 回答 1

1

引用来自:如何侦听自定义 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>

Then when a url matching your schema is opened your app will be called to handle it I assume. Taking into consideration that scheme and pathcorrespond to this:

scheme://host/path

After that, in the activity you've set in the manifest to handle this stuff:

Uri data = getIntent().getData(); 
if (!data.equals(null)){ 
    String scheme = data.getScheme(); 
    //Or whatever you needed
}
于 2012-05-16T09:13:35.577 回答