일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Fragment에서 Activity의 함수 사용하기
- ActivityTestRule
- 테마 아이콘
- 구분선
- 코딜리티
- searchview
- adapter
- 재사용
- LayoutManger
- 안드로이드스튜디오
- 안드로이드13
- recyclerview
- fragment
- 코틀린
- 리사이클러뷰
- IntentTestRule
- 고차함수
- 안드로이드
- Error:Execution failed for task ':app:mergeDebugResources'
- viewholder
- 안드로이드개발레벨업교과서
- ui test
- 생명주기
- espresso
- high order function
- 뷰변경 감지
- 스와이프
- Android
- binding adapter
- Fragment 수동 추가
Archives
- Today
- Total
룬아님의 취중코딩
getQueryParameter를 사용하면 encode url은 어떻게 될까? 본문
외부 스킴을 사용하여 앱을 킬때에 encode되어있는 url을 포함하여 넘겨줄 때가 있다.
myScheme://info?url=%2fsomething
-> myScheme://info?url=/something
이때 받는 쪽에서 Uri객체의 getQueryParameter() 함수를 사용하면 encode되어있는 url이 자동으로 decode되기 때문에 따로 decode처리를 해줄 필요가 없다.
String url = uri.getQueryParameter("url");
//url = "/something"
아래는 getQueryParameter의 코드이다.
@Nullable
public String getQueryParameter(String key) {
if (isOpaque()) {
throw new UnsupportedOperationException(NOT_HIERARCHICAL);
}
if (key == null) {
throw new NullPointerException("key");
}
final String query = getEncodedQuery();
if (query == null) {
return null;
}
final String encodedKey = encode(key, null);
final int length = query.length();
int start = 0;
do {
int nextAmpersand = query.indexOf('&', start);
int end = nextAmpersand != -1 ? nextAmpersand : length;
int separator = query.indexOf('=', start);
if (separator > end || separator == -1) {
separator = end;
}
if (separator - start == encodedKey.length()
&& query.regionMatches(start, encodedKey, 0, encodedKey.length())) {
if (separator == end) {
return "";
} else {
String encodedValue = query.substring(separator + 1, end);
return UriCodec.decode(encodedValue, true, StandardCharsets.UTF_8, false);
}
}
// Move start to end of name.
if (nextAmpersand != -1) {
start = nextAmpersand + 1;
} else {
break;
}
} while (true);
return null;
}
반응형
'개발 > 안드로이드 개발' 카테고리의 다른 글
Found data binding errors. (데이터 바인딩 에러를 찾아보자) (0) | 2019.09.06 |
---|---|
리사이클러뷰 변화를 감지하는 registerAdapterDataObserver (0) | 2019.09.06 |
androidx.test.espresso.intent.Intents.internalIntended(org.hamcrest.Matcher, androidx.test.espresso.intent.VerificationMode, java.util.List)' on a null object reference (0) | 2019.08.28 |
coordinatorlayout 툴바 flag (0) | 2019.08.27 |
안드로이드 디렉토리 구조 만들기 (feat. MultiMap) (0) | 2019.08.27 |
Comments