투케이2K

121. (AndroidStudio/android/java) URL SCHEMA (스키마) 사용해 외부 앱 실행 및 QueryParameter 데이터 전송 실시 본문

Android

121. (AndroidStudio/android/java) URL SCHEMA (스키마) 사용해 외부 앱 실행 및 QueryParameter 데이터 전송 실시

투케이2K 2021. 4. 27. 16:46
반응형

/* =========================== */

[ 개발 환경 설정 ]

개발 툴 : AndroidStudio

개발 언어 : java

/* =========================== */

/* =========================== */

[소스 코드]

[소스코드 : 접속하는 쪽 - 손님]

//========== [URL 스키마 접속하는 쪽 - 손님] ==========
<JAVA 파일 : 전역 변수 선언>
String packageNames = "kr.co.two2k.manager";
String activityName = "kr.co.two2k.manager.A_UrlSchemaData";
String schemaName = "test_schema";
String hostName = "test_host";
String parameter = "name=kwon&idno=20131575";




<JAVA 파일 : 액티비티명과 패키지명으로 다이렉트 접속>
try {				
	ComponentName compName = new ComponentName(packageNames,activityName); //TODO 액티비티 지정이동

	Intent intent = new Intent(Intent.ACTION_VIEW);
	intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
	intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
	intent.addCategory(Intent.CATEGORY_DEFAULT);
	intent.addCategory(Intent.CATEGORY_BROWSABLE);
	if(parameter != null && parameter.length() > 0){
		intent.setData(Uri.parse(schemaName+"://"+hostName+"?"+parameter)); //TODO 데이터 보내기
	}
	else {
		intent.setData(Uri.parse(schemaName+"://"+hostName)); //TODO 일반 호출
	}
	intent.addCategory(Intent.CATEGORY_LAUNCHER);
	intent.setComponent(compName); //TODO 액티비티 지정이동
	startActivity(intent);
	overridePendingTransition(0,0);				 			
}
catch (Exception e){
	e.printStackTrace();			
}




<JAVA 파일 : 스키마와 호스트명으로 접속>
try {
	String url = "";
	if(parameter != null && parameter.length() > 0){
		url = schemaName+"://"+hostName+"?"+parameter; //TODO 데이터 보내기
	}
	else {
		url = schemaName+"://"+hostName; //TODO 일반 호출
	}
	Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
	intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
	startActivity(intent);
	overridePendingTransition(0,0);
}
catch (Exception e){
	e.printStackTrace();
}

[소스코드 : 받는 쪽 - 주인]

//========== [URL 스키마 맞이하는 쪽 - 주인] ==========
<AndroidManifest.xml 파일>
<activity
	android:name=".A_UrlSchemaData"
	android:screenOrientation="portrait"
	android:windowSoftInputMode="adjustPan">
	<!-- UrlSchema 사용위해 인텐트 필터 등록 -->
	<intent-filter>
		<action android:name="android.intent.action.VIEW" />
		<category android:name="android.intent.category.DEFAULT" />
		<category android:name="android.intent.category.BROWSABLE" />

		<!-- 호스트와 스키마값이 중요하다. -->
		<data android:host="test_host"
		android:scheme="test_schema"/>
	</intent-filter>
</activity>




<JAVA 파일 : A_UrlSchemaData>
//TODO [초기 액티비티 실행 시 URL 스키마로 접속한것 확인] 
try {
	if(getIntent()!=null){
		Uri uri = getIntent().getData();
		if(uri != null){
			Log.d("---","---");
			Log.w("//===========//","================================================");
			Log.d("","\n"+"[A_UrlSchemaData > UrlSchema 받은 데이터 확인 성공]");
			Log.d("","\n"+"[데이터 : "+String.valueOf(uri.toString())+"]");
			Log.d("","\n"+"[Query(name) : "+String.valueOf(uri.getQueryParameter("name"))+"]");
			Log.d("","\n"+"[Query(idno) : "+String.valueOf(uri.getQueryParameter("idno"))+"]");
			Log.w("//===========//","================================================");
			Log.d("---","---");
		}
		else {
			Log.d("---","---");
			Log.e("//===========//","================================================");
			Log.d("","\n"+"[A_UrlSchemaData > UrlSchema 받은 데이터 확인 실패]");
			Log.d("","\n"+"[데이터 : "+String.valueOf("url 없음")+"]");
			Log.e("//===========//","================================================");
			Log.d("---","---");
		}
	}
	else {
		Log.d("---","---");
		Log.e("//===========//","================================================");
		Log.d("","\n"+"[A_UrlSchemaData > UrlSchema 받은 데이터 확인 실시]");
		Log.d("","\n"+"[데이터 : "+String.valueOf("intent 없음")+"]");
		Log.e("//===========//","================================================");
		Log.d("---","---");
	}
}
catch (Exception e){
	e.printStackTrace();
}

/* =========================== */

/* =========================== */

[결과 출력]

[결과 출력 : 접속하는 쪽 - 손님]

[결과 출력 : 받는 쪽 - 주인]

/* =========================== */

반응형
Comments