Android从浏览器获取网址

时间:2015-07-03 11:15:46

标签: android url

我尝试在网址上打开我的应用并从中获取价值,网址如下:path.com/item?key = value

清单中的

<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:host="path.com"
        android:pathPrefix="/item"
        android:scheme="http" />
</intent-filter>

但是

Uri data = getIntent().getData(); 
data.getPathSegments();
Log.d("TAG", "param is:" + params.get(0);

返回:param是:item / item。如何获得key = value或full url

3 个答案:

答案 0 :(得分:4)

这就是我最近在我的应用中所做的事情

使用以下意图过滤器

<intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <data android:scheme="<SCHEME_NAME>" />

            <category android:name="android.intent.category.BROWSABLE" />
            <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

在您的网址中使用以下

for Chrome

window.location = "intent://item?key=value#Intent;scheme=<SCHEME_NAME>;package=<APP_PACKAGE>;";`

其他弓箭手

window.location = "<SCHEME_NAME>://item?key=value";

在Activity类中使用以下

String uriPath = getIntent().getDataString();

uriPath将包含字符串“item?key = value”,您可以根据模式进行解析。

您可以修改JS中的“item?key = value”以仅在需要时发送值。 做这个实验。

点击链接了解更多信息 https://developer.android.com/training/app-indexing/deep-linking.html

答案 1 :(得分:1)

如果目的是访问网址(即intent.getAction() == Intent.ACTION_VIEW),则intent.getData()将返回该网址。

Uri data = intent.getData();
String path = data.getPath();

答案 2 :(得分:1)

要获取完整的Uri字符串,可以在Uri上执行toString()。但我会建议反对。最有可能的是,你想要的是Uri的方法。

如果您想要完整路径,请使用getPath()。如果您希望将完整的Uri作为字符串toString()。如果您需要特定的查询参数getQueryParameter(String key)。如果您需要完整的查询字符串getQuery()。如果您想要查询参数中的密钥getQueryParameterNames()

还有更多。根据你的问题,我认为那些可能对你有用。

当然,您可以自己进行解析,但大多数时候它不必要且容易出错。

请参阅http://developer.android.com/reference/android/net/Uri.html