IntentURL Sample

IntentURL Sample 설치 경로 접속

url: https://drive.google.com/file/d/1gOV_kGcI7Y2hItSKRS39ILPMcAFs1kjt/view?usp=drive_link

1️⃣ URI 문자열 구성

String uri = "intent://start?" + kisvanSpec.RequestData(rbActivity.isChecked()) + "#Intent;scheme=kisagent;action=kr.co.kisvan.andagent.inapp;package=kr.co.kisvan.andagent;end";

try {
    intent = Intent.parseUri(uri, Intent.URI_INTENT_SCHEME);
} catch (URISyntaxException e) {
    throw new RuntimeException(e);
}

if (rbActivity.isChecked()) {
    startActivityForResult(intent, 3000);
} else if (rbBroadCast.isChecked()) {
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(appName);
    receiver = new AndroidAgentRes();
    registerReceiver(receiver, intentFilter);
    startActivity(intent);
}

"intent://start?": URI 스킴의 시작, intent://로 시작하면 Android가 특별히 Intent로 인식

kisvanSpec.RequestData(): 호출 시, 필요한 데이터(결제 방법, 거래 금액, 등등)

-> key=value&key2=value2 이런 형태로 반환.

#intent; ~ ;end: 인텐트 메타 데이터로, 아래 항목들을 지정해서 Intent의 세부 정보를 완성

#Intent; ... ;end 안의 각 항목 의미 👇

속성
의미

scheme=kisagent

URI 스킴 이름 (보통 AndroidManifest.xml<intent-filter>에 등록된 스킴)

action=kr.co.kisvan.andagent.inapp

실행할 액션명 (<intent-filter>action과 매칭)

package=kr.co.kisvan.andagent

실행할 대상 앱의 패키지 이름

end

Intent 구문의 끝을 표시

-> 위 단계를 거쳐 ANDAGT 앱의 특정 액션을 실행하는 구조.

2️⃣ Intent 객체 생성

intent = Intent.parseUri(uri, Intent.URI_INTENT_SCHEME);

위에서 만든 문자열을 실제 Intent 객체로 변환

-> Intent.parseUri는 문자열에 있는 scheme, action, package, extras 등을 자동으로 추출해서 Intent로 생성

3️⃣ 실행 방식 분기

if (rbActivity.isChecked()) { startActivityForResult(intent, 3000); } else if (rbBroadCast.isChecked()) { ... startActivity(intent); }

-> 라디오 버튼에 따라 다른 실행 방식 선택하도록.

Last updated