【问题标题】:Android get url from browserAndroid从浏览器获取网址
【发布时间】:2015-07-03 11:15:45
【问题描述】:

我尝试通过点击 url 打开我的应用并从中获取价值,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);

返回:参数是:item /item。如何获取 key=value 或完整的 url

【问题讨论】:

    标签: android url


    【解决方案1】:

    这就是我最近在我的应用中的做法

    使用以下意图过滤器

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

    在您的网址中使用以下

    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

    【讨论】:

      【解决方案2】:

      如果意图是访问一个 URL(即intent.getAction() == Intent.ACTION_VIEW),那么intent.getData() 将返回该 URL。

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

      【讨论】:

      • 不,data.getPath返回/profile,但是data.toString()返回链接,我是白痴:(
      【解决方案3】:

      要获取完整的 Uri 字符串,您可以对 Uri 执行 toString()。但我建议不要这样做。很可能,你想要的已经在 Uri 的方法中了。

      如果您想要完整路径,请使用getPath()。如果您想要完整的 Uri 作为字符串,toString()。如果您需要特定的查询参数,getQueryParameter(String key)。如果您想要完整的查询字符串,getQuery()。如果你想要你在查询参数中得到的键,getQueryParameterNames()。

      还有很多。根据您的问题,我认为这些可能对您有用。

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

      见http://developer.android.com/reference/android/net/Uri.html

      【讨论】:

        猜你喜欢
        • 2013-02-25
        • 2013-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-13
        • 2013-03-07
        • 2014-04-16
        • 2014-08-04
        相关资源
        最近更新 更多