1

我在下面的循环中获取 URL 字符串

  referrer = intent.getStringExtra("referrer"); 

以下是日志

action: 'com.android.vending.INSTALL_REFERRER' referrer string: 'utm_source=tooyoou&utm_medium=banner&utm_term=foursquare&utm_content=foursquare-tooyoou&utm_campaign=foursquare'

我想解析这个 URL 字符串并得到下面的字符串 "utm_source" "utm_medium" "utm_term" "utm_content" "utm_campaign"

我尝试了下面的代码,但得到了 null

Uri referrerUri = Uri.parse(referrer);
String utmsource= referrerUri.getQueryParameter("utm_source");
String utmmedium= referrerUri.getQueryParameter("utm_medium");
String utmterm= referrerUri.getQueryParameter("utm_term");
String utmcontent= referrerUri.getQueryParameter("utm_content");
String utmcampaign= referrerUri.getQueryParameter("utm_campaign");


Log.d("utmsource===" , utmsource);
Log.d("utmmedium===" , utmmedium);
Log.d("utmterm===" , utmterm);
Log.d("utmcontent===" , utmcontent);
Log.d("utmcampaign===" , utmcampaign);

可能是什么问题呢 ?

4

3 回答 3

4

你可以用split..

String[] referrerList = referrer.split('&');
String utmsource= referrerList[0].substring(referrerList[0].indexOf("=") + 1);
String utmmedium= referrerList[1].substring(referrerList[1].indexOf("=") + 1);
String utmterm= referrerList[2].substring(referrerList[2].indexOf("=") + 1);
....
于 2013-04-03T07:54:10.900 回答
3

您可以执行类似的操作,而不是将其解析StringURI.

String[] uriTokens = referrer.split("&");
for(int i=0;i<uriTokens.length;i++){
    String[] valTokens = uriTokens[i].split("=");
    switch(valTokens[0]){
    case "utm_source":
        utmsource = valTokens[1];
        break;
    case "utm_medium":
        utmmedium = valTokens[1];
        break;
    case "utm_term":
        utmterm = valTokens[1];
        break;
    case "utm_content":
        utmcontent = valTokens[1];
        break;
    case "utm_campaign":
        utmcampaign = valTokens[1];
        break;
    }
}
于 2013-04-03T07:59:50.983 回答
0

或与番石榴:

private static final String REFERRER = "referrer";
private static final String EQUALS = "%3D";
private static final String AMPERSAND = "%26";

Map<String, String> map = Splitter.on(AMPERSAND).withKeyValueSeparator(EQUALS)
            .split(intent.getStringExtra(REFERRER));
于 2014-07-28T08:12:23.287 回答