반응형
String str_script = "";

str_script += "var html_string = '';";

str_script += "html_string += '<div>';";
str_script += "html_string += 'WebView 에 동적 HTML 에 추가';";
str_script += "html_string += '</div>';";

str_script += "document.body.insertAdjacentHTML('afterend', html_string);";

webView.loadUrl("javascript:" + str_script);

이 스크립트의 핵심은 document.body.insertAdjacentHTML('afterend', html_string) 이 부분이다.

 

Element.insertAdjacentHTML(position, html_text)

 

기준이 되는 Element 에 html_text 를 추가하는 것이다.

 

position 은 다음과 같이 4가지 위치를 갖는다.

 

beforebegin - Element 앞에

afterbegin - Element첫번째 child

beforeend - Element 의 마지막 child

afterend - Element 뒤에

 

position 에 따라 html_text 로 추가된 html 의 위치가 결정된다.

 

이미 있는 페이지에 레이어 정도 띄워주는 거라면 'afterend' 면 충분할 것 같다.

 

이걸 응용하면 실제 운영중인 페이지에 영향을 주지 않고도 앱에서만 뭔가를 추가로 사용하려 할 때 좋은 것 같다.

반응형
반응형

소수점을 정수로 변환할 때 (int) 를 쓰는 경우와 Math.round 로 반올림을 하는 경우가 있다.

 

(int) 를 사용하면 절삭이 된다. 따라서 Math.floor 를 사용할 때와 같은 결과가 된다.

float a = 9.8f;

int b = (int)a;

//// b 의 값은 9


float c = -9.8f;

int d = (int)c;

//// d 의 값은 -9

 

반면, Math.round 를 사용하면 반올림이 된다.

float a = 9.8f;

int b = Math.round(a);

//// b 의 값은 10


float c = -9.8f;

int d = Math.round(c);

//// d 의 값은 -10

 

결과값에 반올림이 필요한지, 내림(버림, 절삭)이 필요한지 잘 판단해서 사용해야 한다.

반응형
반응형

안드로이드에서 카카오페이 단건결재 API 연동 시

 

웹뷰를 이용해야하고, 결제 준비를 통해 Response 값을 받았을 경우에 해당함

 

 

Response 를 통해 받은 next_redirect_app_url 를 웹뷰에서 통해 호출해야함

 

public boolean shouldOverrideUrlLoading  에 아래 코드를 추가하면 됨

 

//// 카카오페이
if (url.startsWith("intent://kakaopay/pg")) {

  Intent intent = null;

  try {
  
    intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
    Uri uri = Uri.parse(intent.getDataString());

    startActivity(new Intent(Intent.ACTION_VIEW, uri));
    return true;

  } catch (URISyntaxException ex) {

  	return false;

  } catch (ActivityNotFoundException e) {

    if (intent == null) return false;

    //// 앱이 설치되어 있지 않으면 구글 플레이스토어로 연결함
    String package_name = intent.getPackage();	//// intent.getPackage() 대신 해당 패키지명을 추가하면 됨

    if (package_name != null) {
    
      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + package_name)));
      return true;
      
    }

    return false;
    
  }

}

 

비슷한 예제는 많은데, 제대로 실행된 경우는 이 소스밖에 없었음

 

몇시간을 검색하고 테스트해서 찾아낸 결과임

 

출처 : github.com/iamport/iamport-kakao-android-gradle

반응형

+ Recent posts