안드로이드 개발 팁 #23 - Uri 객체로부터 읽은 파라메터에서 '+' 문자가 ' '로 바뀌어 있는 문제steemCreated with Sketch.

Uri 클래스의 getQueryParameter(key) 메소드를 호출하여 파라메터의 값을 구할 수 있습니다. 문제는 읽은 문자열에서 '+' 문자가 ' ' 문자(즉, 스페이스)로 바뀐다는 점이다. 이 문제는 어떻게 해결할 수 있을까요?


해결 방법

getQueryParameter(key) 대신 getQueryParameters(key) 메소드를 호출하면 된다는 답변을 보았습니다. 후자를 사용해보니 ‘+’ 문자가 그대로 유지됨을 확인할 수 있었어요.


개선책

그런데 getQueryParameters(key) 메소드의 리턴 값은 List입니다. 리스트가 비었는지, 리스트의 길이가 0인지를 체크해야 하며, 이로 인해 코드가 길어진다. 보다 간결한 코드를 위해 Uri 클래스의 확장 함수를 구현해 보았습니다. 이름은 동일하게 Uri.getQueryParameter로 하였구요.

fun Uri.getQueryParameter(key: String, defValue: String): String {
    val queryParams = getQueryParameters(key)
    return when {
        (null == queryParams) -> defValue
        (queryParams.isEmpty()) -> defValue
        else -> queryParams[0]
    }
}
파라메터
  • key : 기존 Uri.getQueryParameter 메소드와 동일합니다.
  • defValue: 해당 키의 값이 없을 경우 이 메소드가 리턴할 기본 값입니다.
리턴값
  • 이름이 key인 파라메터의 값

참고 사이트

https://stackoverflow.com/questions/34745477/uri-getqueryparameters-method-converting-character-with-space


지난 안드로이드 개발 팁

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.15
TRX 0.15
JST 0.029
BTC 56269.96
ETH 2364.95
USDT 1.00
SBD 2.26