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