通过android中的意图获取uri数据

时间:2012-05-16 09:08:55

标签: android html5

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

1 个答案:

答案 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>

然后,当打开与您的架构匹配的网址时,我会调用您的应用来处理它。 考虑到schemepath对应于此:

scheme://host/path

之后,在清单中设置的活动中处理这些内容:

Uri data = getIntent().getData(); 
if (!data.equals(null)){ 
    String scheme = data.getScheme(); 
    //Or whatever you needed
}