저의 경우는 custom:\\{"job":"do","key":"data"} 와 같은 형태로 사용하고 있습니다.
현재 그렇게 사용할 경우 클라이언트 부분에서 javascript에서 오류가 발생해서 사용할 없습니다.
custom:\\{"job":"do","key":"data"}와 같은 코드는 아래의 함수를 사용해서 인코딩 후 사용하셔야 합니다.
encodeURIComponent
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
return commonUrlLoading(view, request.getUrl().toString());
}
해당 코드는 아래와 같이 앞부분 커스텀 스킴 부분을 삭제하고 디코드해서 사용하시면 됩니다.
String temp = url.replace(APP_SCHEME, "");
Log.d(TAG, "commonUrlLoading temp : " + temp);
// 인코딩된 문자열인지 확인하고 디코딩
try {
// URLDecoder를 사용하여 디코딩
temp = URLDecoder.decode(temp, StandardCharsets.UTF_8.toString());
Log.d(TAG, "commonUrlLoading decoded temp : " + temp);
} catch (Exception e) {
Log.e(TAG, "URL decoding error", e);
}
// JSON 문자열을 Map으로 변환
Type mapType = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> param = gson.fromJson(temp, mapType);
Log.d(TAG, "commonUrlLoading: param : " + param);
// Map에서 job 값 추출
String job = MapUtils.getString(param, KEY_JOB, "");
'프로그래밍 TIP > Android' 카테고리의 다른 글
android keyhash 추출 방법(macos 기준) (0) | 2024.10.31 |
---|---|
안드로이드 스튜디오 keystore sha1 코드 알아내기 (0) | 2024.07.20 |
debug.keystore sha1 값 알아내기(mac os기준) (0) | 2024.07.18 |
GooglePlay 처음부터 앱 등록하기 (2022년11월29일 기준) (0) | 2022.11.29 |
Android Fragment 테그에 초기값 지정하기(argument) (0) | 2022.11.05 |