Notice
Recent Posts
Recent Comments
Link
투케이2K
889. (Android/Java) [간단 소스] 스키마 접속 여부 확인 및 파라미터 데이터 확인 - App Scheme Run 본문
Android
889. (Android/Java) [간단 소스] 스키마 접속 여부 확인 및 파라미터 데이터 확인 - App Scheme Run
투케이2K 2024. 10. 23. 19:34[개발 환경 설정]
개발 툴 : AndroidStudio
개발 언어 : Java / Kotlin
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Java
- 개발 툴 : Android Studio
- 구분 : Scheme 스키마
- 사전 준비 필요 : AndroidManifest.xml 파일에서 스키마 접속을 처리하려는 액티비티 설정 필요
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------
// TODO [SEARCH FAST] : [URL 스키마 접속 확인 실시]
public void innerUrlScheme(){
try {
/**
* // -----------------------------------------
* [스키마 데이터 형식]
* // -----------------------------------------
* 1. 예시 : test://call?
* // -----------------------------------------
* 2. 예시 : test://call?name=twok&age=29
* // -----------------------------------------
* 3. 스키마 데이터 초기화 :
* - [애플리케이션 시작] : S_Preference.proccessCreateClear
* - [애플리케이션 종료] : S_Preference.proccessFinishClear
* // -----------------------------------------
* */
// [스키마 접속 여부 확인 실시]
if(getIntent() != null){
// [URL 스키마 전달 받은 데이터 확인 실시]
Uri uri = getIntent().getData();
if(uri != null){
// [스키마 및 호스트 데이터 확인 실시]
String total = String.valueOf(uri.toString()); // [스키마 + 호스트 + 데이터 전체]
String scheme = String.valueOf(uri.getScheme()); // [스키마]
String host = String.valueOf(uri.getHost()); // [호스트]
String endCheck = host + "?"; // [마지막 종료 형식 확인 위함 : 스키마 데이터 널 체크]
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> innerUrlScheme() :: URL 스키마 getData() 접속 확인]");
Log.i("","\n"+"[접속 여부 :: 스키마 접속 확인]");
Log.i("","\n"+"[uri :: "+String.valueOf(total)+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// TODO [로그인 연동 : 스키마 / 호스트 접속 : login]
if (scheme.trim().equals(S_FinalData.SCHEME_IN_TITLE_APP)
&& host.trim().equals(S_FinalData.SCHEME_IN_HOST_LOGIN)){
// [스키마 데이터 체크 수행 실시]
try {
if (uri.getQueryParameterNames() != null
&& uri.getQueryParameterNames().size() > 0
&& total.trim().endsWith(endCheck.trim()) == false){ // KEY 값이 하나라도 포함된 경우
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> innerUrlScheme() :: 스키마 접속 분기 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[로 직 :: [로그인 연동] 스키마 접속 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[스키마 데이터 :: 전달 받은 스키마 데이터 있음]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [배열에 스키마 데이터 담기 수행 실시]
ArrayList keyList = new ArrayList(uri.getQueryParameterNames());
JSONObject schemeJSON = new JSONObject();
for (int i=0; i<keyList.size(); i++){
schemeJSON.put(String.valueOf(keyList.get(i)), uri.getQueryParameter(String.valueOf(keyList.get(i))));
}
// [프리퍼런스에 [로그인] 스키마 데이터 저장 실시]
S_Preference.setString(getApplication(), S_FinalData.PRE_SCHEME_DATA_LOGIN, schemeJSON.toString());
}
else {
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> innerUrlScheme() :: 스키마 접속 분기 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[로 직 :: [로그인 연동] 스키마 접속 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[스키마 데이터 :: 전달 받은 스키마 데이터 없음]");
Log.e("//===========//","================================================");
Log.i("---","---");
}
}
catch (Exception e){
e.printStackTrace();
}
// [로그 출력 실시]
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> innerUrlScheme() :: 스키마 접속 분기 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[로 직 :: [로그인 연동] 스키마 접속 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[스키마 :: "+String.valueOf(scheme)+"]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[호스트 :: "+String.valueOf(host)+"]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[KEY [ALL] :: "+String.valueOf(uri.getQueryParameterNames())+"]");
//Log.i("","\n"+"[KEY [name] :: "+String.valueOf(uri.getQueryParameter("name"))+"]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[스키마 데이터 [PRE_SCHEME_DATA_LOGIN] :: "+String.valueOf(S_Preference.getString(getApplication(), S_FinalData.PRE_SCHEME_DATA_LOGIN))+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [SEARCH FAST] : [URL 스키마 접속 확인 실시]
S_Preference.setString(getApplication(), S_FinalData.PRE_APP_NEW_TASK, "TRUE");
}
// TODO [일반 호출 : 스키마 / 호스트 접속 : call]
else {
// [스키마 데이터 체크 수행 실시]
try {
if (uri.getQueryParameterNames() != null
&& uri.getQueryParameterNames().size() > 0
&& total.trim().endsWith(endCheck.trim()) == false){ // KEY 값이 하나라도 포함된 경우
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> innerUrlScheme() :: 스키마 접속 분기 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[로 직 :: [일반] 스키마 접속 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[스키마 데이터 :: 전달 받은 스키마 데이터 있음]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [배열에 스키마 데이터 담기 수행 실시]
ArrayList keyList = new ArrayList(uri.getQueryParameterNames());
JSONObject schemeJSON = new JSONObject();
for (int i=0; i<keyList.size(); i++){
schemeJSON.put(String.valueOf(keyList.get(i)), uri.getQueryParameter(String.valueOf(keyList.get(i))));
}
// [프리퍼런스에 [일반] 스키마 데이터 저장 실시]
S_Preference.setString(getApplication(), S_FinalData.PRE_SCHEME_DATA_CALL, schemeJSON.toString());
}
else {
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> innerUrlScheme() :: 스키마 접속 분기 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[로 직 :: [일반] 스키마 접속 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[스키마 데이터 :: 전달 받은 스키마 데이터 없음]");
Log.e("//===========//","================================================");
Log.i("---","---");
}
}
catch (Exception e){
e.printStackTrace();
}
// [로그 출력 실시]
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> innerUrlScheme() :: 스키마 접속 분기 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[로 직 :: [일반] 스키마 접속 처리 실시]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[스키마 :: "+String.valueOf(scheme)+"]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[호스트 :: "+String.valueOf(host)+"]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[KEY [ALL] :: "+String.valueOf(uri.getQueryParameterNames())+"]");
//Log.i("","\n"+"[KEY [name] :: "+String.valueOf(uri.getQueryParameter("name"))+"]");
Log.i("","\n"+"--------------------------------");
Log.i("","\n"+"[스키마 데이터 [PRE_SCHEME_DATA_CALL] :: "+String.valueOf(S_Preference.getString(getApplication(), S_FinalData.PRE_SCHEME_DATA_CALL))+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [SEARCH FAST] : [URL 스키마 접속 확인 실시]
S_Preference.setString(getApplication(), S_FinalData.PRE_APP_NEW_TASK, "TRUE");
}
}
else {
Log.i("---","---");
Log.d("//===========//","================================================");
Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> innerUrlScheme() :: URL 스키마 getData() 접속 확인]");
Log.i("","\n"+"[접속 여부 :: [1] 일반 실행]");
Log.i("","\n"+"[로 직 :: 스키마 데이터 및 접속 상태 플래그 초기화 실시]");
Log.d("//===========//","================================================");
Log.i("---","---");
// [로그인 : 스키마 데이터 초기화]
S_Preference.setString(getApplication(), S_FinalData.PRE_SCHEME_DATA_LOGIN, "");
// [일반 : 스키마 데이터 초기화]
S_Preference.setString(getApplication(), S_FinalData.PRE_SCHEME_DATA_CALL, "");
// [SEARCH FAST] : [URL 스키마 접속 확인 실시]
S_Preference.setString(getApplication(), S_FinalData.PRE_APP_NEW_TASK, "");
}
}
else {
Log.i("---","---");
Log.d("//===========//","================================================");
Log.i("","\n"+"["+String.valueOf(ACTIVITY_NAME)+" >> innerUrlScheme() :: URL 스키마 getIntent() 접속 없음]");
Log.i("","\n"+"[접속 여부 :: [2] 일반 실행]");
Log.i("","\n"+"[로 직 :: 스키마 데이터 및 접속 상태 플래그 초기화 실시]");
Log.d("//===========//","================================================");
Log.i("---","---");
// [로그인 : 스키마 데이터 초기화]
S_Preference.setString(getApplication(), S_FinalData.PRE_SCHEME_DATA_LOGIN, "");
// [일반 : 스키마 데이터 초기화]
S_Preference.setString(getApplication(), S_FinalData.PRE_SCHEME_DATA_CALL, "");
// [SEARCH FAST] : [URL 스키마 접속 확인 실시]
S_Preference.setString(getApplication(), S_FinalData.PRE_APP_NEW_TASK, "");
}
}
catch (Exception e){
e.printStackTrace();
}
}
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
[Android - C_MoveApp - 외부 앱 실행 , 스키마 실행 , 앱 설치 여부 , 마켓 이동 , 크롬 기반 외부 링크 이동]
https://blog.naver.com/kkh0977/222678185676?trackingCode=blog_bloghome_searchlist
[Android - URL SCHEMA (스키마) 사용해 외부 앱 실행 및 QueryParameter 데이터 전송 실시]
https://blog.naver.com/kkh0977/222324984002?trackingCode=blog_bloghome_searchlist
[Android - 앱 스키마 (scheme) 접속 시 중복 실행 방지 - 앱 아이콘 클릭 시 앱 초기화 현상 해결]
https://blog.naver.com/kkh0977/222696613021?trackingCode=blog_bloghome_searchlist
// --------------------------------------------------------------------------------------
반응형
'Android' 카테고리의 다른 글
Comments