我尝试在网址上打开我的应用并从中获取价值,网址如下: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
答案 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