Notice
Recent Posts
Recent Comments
Link
투케이2K
8. (TWOK/UTIL) [Android/Java] C_MoveApp - 외부 앱 실행 , 스키마 실행 , 앱 설치 여부 , 마켓 이동 , 크롬 기반 외부 링크 이동 본문
투케이2K 유틸파일
8. (TWOK/UTIL) [Android/Java] C_MoveApp - 외부 앱 실행 , 스키마 실행 , 앱 설치 여부 , 마켓 이동 , 크롬 기반 외부 링크 이동
투케이2K 2022. 3. 20. 21:50[설 명]
프로그램 : Android / Java
설 명 : 외부 앱 실행 , 스키마 실행 , 앱 설치 여부 , 마켓 이동 , 크롬 기반 외부 링크 이동
[소스 코드]
package com.example.testapp;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.util.Log;
import java.util.List;
public class C_MoveApp {
/**
* TODO [클래스 설명]
* // -----------------------------------------
* 1. 외부 링크 및 외부 앱 이동 클래스
* 2. 외부 앱 실행 , 스키마 실행 , 앱 설치 여부 , 마켓 이동 , 크롬 기반 외부 링크 이동
* // -----------------------------------------
* */
// TODO [외부 앱이 설치되어 있으면 메인 실행, 아니면 마켓이동 실시 메소드]
public static void goAppRunLaunch(Context mContext, final String packageNames){
/**
* // -----------------------------------------
* [goAppRunLaunch 메소드 설명]
* // -----------------------------------------
* 1. getLaunchIntentForPackage 사용해 외부앱 설치 여부 확인 및 외부앱 실행 실시
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.goAppRunLaunch(A_Main.this, "com.test.app");
* // -----------------------------------------
* 3. 로 직 : 외부앱이 설치되지 않은 경우 앱 설치 진행 / 설치된 경우 외부앱 실행 실시
* // -----------------------------------------
* */
// [사전 패키지명이 널인지 체크 실시]
if (packageNames != null && packageNames.length()>0
&& !packageNames.trim().equals("") && !packageNames.trim().equals("null")){
}
else { // [패키지 명이 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppRunLaunch() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기 실패]]");
Log.i("","\n"+"[error :: "+"패키지명 null 널 임"+"]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return;
}
// [외부앱이 설치되었는지 확인]
try {
// [특정 패키지 명이 앱에 설치 되어 있는지 확인]
Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
if (existPackage != null) { // [설치되어 있는 경우]
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppRunLaunch() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 됨"+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [인텐트 이동]
Intent intent = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
mContext.startActivity(intent);
}
else { // [설치되지 않은 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppRunLaunch() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 안됨"+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
// [구글 플레이스토어 이동]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
mContext.startActivity(marketLaunch);
}
}
catch (ActivityNotFoundException e) {
// [이동할 패키지 명을 찾이 못한 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppRunLaunch() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기 실패]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[로 직 :: 구플 플레이스토어 마켓 이동 수행 실시]");
Log.i("","\n"+"[ActivityNotFoundException :: "+String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
// [구글 플레이스토어 이동]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
mContext.startActivity(marketLaunch);
}
catch (Exception e){
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppRunLaunch() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기 에러]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[Exception :: "+String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
}
}
// TODO [외부 앱이 설치되어 있으면 메인 실행, 아니면 마켓이동 실시 메소드]
public static void goAppRunQueries(Context mContext, final String packageNames){
/**
* // -----------------------------------------
* [goAppRunQueries 메소드 설명]
* // -----------------------------------------
* 1. AndroidManifest.xml 에 패키지 명을 등록 후 외부앱 설치 여부 확인 및 외부앱 실행 실시
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.goAppRunQueries(A_Main.this, "com.test.app");
* // -----------------------------------------
* 3. 로 직 : 외부앱이 설치되지 않은 경우 앱 설치 진행 / 설치된 경우 외부앱 실행 실시
* // -----------------------------------------
* 4. 필수 AndroidManifest.xml 등록 사항 : [패키지 명 등록 필요]
* <queries>
* <package android:name="com.android.chrome" />
* </queries>
* // -----------------------------------------
* */
// [사전 패키지명이 널인지 체크 실시]
if (packageNames != null && packageNames.length()>0
&& !packageNames.trim().equals("") && !packageNames.trim().equals("null")){
}
else { // [패키지 명이 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppRunQueries() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기 실패]]");
Log.i("","\n"+"[error :: "+"패키지명 null 널 임"+"]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return;
}
// [외부앱이 설치되었는지 확인]
boolean isExist = false;
PackageManager packageManager = mContext.getPackageManager();
List<ResolveInfo> mApps;
Intent mIntent = new Intent(Intent.ACTION_MAIN, null);
mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mApps = packageManager.queryIntentActivities(mIntent, 0);
try {
Log.i("---","---");
Log.d("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppRunQueries() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[설치된 앱 :: "+String.valueOf(mApps.toString())+"]");
Log.d("//===========//","================================================");
Log.i("---","---");
for (int i = 0; i < mApps.size(); i++) {
if(mApps.get(i).activityInfo.packageName.startsWith(packageNames)){
isExist = true;
break;
}
}
} catch (Exception e) {
isExist = false;
}
if(isExist == true){ // [외부 앱이 설치 된 경우]
// [메인으로 인텐트 이동]
try {
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppRunQueries() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 됨"+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [인텐트 이동]
Intent intent = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
mContext.startActivity(intent);
}
catch (Exception e){
//e.printStackTrace();
}
}
else{ // [외부 앱이 설치되어있지 않은 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppRunQueries() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 안됨"+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
try {
// [구글 플레이스토어 앱에서 이동한다]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
mContext.startActivity(marketLaunch);
}
catch (Exception e){
// [구글 플레이스토어 앱이 없을 경우 홈페이지에서 이동한다]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("https://play.google.com/store/apps/details?id="+packageNames));
mContext.startActivity(marketLaunch);
//e.printStackTrace();
}
}
}
// TODO [외부 앱이 설치되어 있으면 스키마 실행, 아니면 마켓이동 실시 메소드]
public static void goAppSchemeMoveLaunch(Context mContext, final String packageNames, final String scheme){
/**
* // -----------------------------------------
* [goAppSchemeMoveLaunch 메소드 설명]
* // -----------------------------------------
* 1. getLaunchIntentForPackage 사용해 외부앱 설치 여부 확인 및 스키마 이동 수행 실시
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.goAppSchemeMoveLaunch(A_Main.this, "com.test.app", "test://call?name=twok&age=29");
* // -----------------------------------------
* 3. 로 직 : 외부앱이 설치되지 않은 경우 앱 설치 진행 / 설치된 경우 스키마 앱 실행 실시
* // -----------------------------------------
* */
// [사전 패키지명이 널인지 체크 실시]
if (packageNames != null && packageNames.length()>0
&& !packageNames.trim().equals("") && !packageNames.trim().equals("null")){
}
else { // [패키지 명이 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveLaunch() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 실패]]");
Log.i("","\n"+"[error :: "+"패키지명 null 널 임"+"]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[scheme :: "+String.valueOf(scheme)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return;
}
// [사전 스키마 명이 널인 체크 실시]
if (scheme != null && scheme.length()>0
&& !scheme.trim().equals("") && !scheme.trim().equals("null")){
}
else { // [패키지 명이 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveLaunch() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 실패]]");
Log.i("","\n"+"[error :: "+"스키마 null 널 임"+"]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[scheme :: "+String.valueOf(scheme)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return;
}
// [외부앱이 설치되었는지 확인]
try {
// [특정 패키지 명이 앱에 설치 되어 있는지 확인]
Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
if (existPackage != null) { // [설치되어 있는 경우]
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveLaunch() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[스키마 데이터 :: "+String.valueOf(scheme)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 됨"+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [형식] : testScheme://testHost?name=kwon&idno=1234
String url = String.valueOf(scheme);
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
mContext.startActivity(intent);
}
else { // [설치되지 않은 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveLaunch() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[스키마 데이터 :: "+String.valueOf(scheme)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 안됨"+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
// [구글 플레이스토어 이동]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
mContext.startActivity(marketLaunch);
}
}
catch (ActivityNotFoundException e) {
// [이동할 패키지 명을 찾이 못한 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveLaunch() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 실패]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[스키마 데이터 :: "+String.valueOf(scheme)+"]");
Log.i("","\n"+"[로 직 :: 구플 플레이스토어 마켓 이동 수행 실시]");
Log.i("","\n"+"[ActivityNotFoundException :: "+String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
// [구글 플레이스토어 이동]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
mContext.startActivity(marketLaunch);
}
catch (Exception e){
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveLaunch() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 에러]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[스키마 데이터 :: "+String.valueOf(scheme)+"]");
Log.i("","\n"+"[Exception :: "+String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
}
}
// TODO [외부 앱이 설치되어 있으면 스키마 실행, 아니면 마켓이동 실시 메소드]
public static void goAppSchemeMoveQueries(Context mContext, final String packageNames, final String scheme){
/**
* // -----------------------------------------
* [goAppSchemeMoveQueries 메소드 설명]
* // -----------------------------------------
* 1. AndroidManifest.xml 에 패키지 명을 등록 후 외부앱 설치 여부 확인 및 외부앱 실행 실시
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.goAppSchemeMoveQueries(A_Main.this, "com.test.app", "test://call?name=twok&age=29");
* // -----------------------------------------
* 3. 로 직 : 외부앱이 설치되지 않은 경우 앱 설치 진행 / 설치된 경우 스키마 앱 실행 실시
* // -----------------------------------------
* 4. 필수 AndroidManifest.xml 등록 사항 : [패키지 명 등록 필요]
* <queries>
* <package android:name="com.android.chrome" />
* </queries>
* // -----------------------------------------
* */
// [사전 패키지명이 널인지 체크 실시]
if (packageNames != null && packageNames.length()>0
&& !packageNames.trim().equals("") && !packageNames.trim().equals("null")){
}
else { // [패키지 명이 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveQueries() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 실패]]");
Log.i("","\n"+"[error :: "+"패키지명 null 널 임"+"]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[scheme :: "+String.valueOf(scheme)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return;
}
// [사전 스키마 명이 널인 체크 실시]
if (scheme != null && scheme.length()>0
&& !scheme.trim().equals("") && !scheme.trim().equals("null")){
}
else { // [패키지 명이 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveQueries() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 실패]]");
Log.i("","\n"+"[error :: "+"스키마 null 널 임"+"]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[scheme :: "+String.valueOf(scheme)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return;
}
// [외부앱이 설치되었는지 확인]
boolean isExist = false;
PackageManager packageManager = mContext.getPackageManager();
List<ResolveInfo> mApps;
Intent mIntent = new Intent(Intent.ACTION_MAIN, null);
mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mApps = packageManager.queryIntentActivities(mIntent, 0);
try {
Log.i("---","---");
Log.d("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveQueries() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[스키마 :: "+String.valueOf(scheme)+"]");
Log.i("","\n"+"[설치된 앱 :: "+String.valueOf(mApps.toString())+"]");
Log.d("//===========//","================================================");
Log.i("---","---");
for (int i = 0; i < mApps.size(); i++) {
if(mApps.get(i).activityInfo.packageName.startsWith(packageNames)){
isExist = true;
break;
}
}
} catch (Exception e) {
isExist = false;
}
if(isExist == true){ // [외부 앱이 설치 된 경우]
// [스키마 인텐트 이동]
try {
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveQueries() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[스키마 :: "+String.valueOf(scheme)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 됨"+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [형식] : testScheme://testHost?name=kwon&idno=1234
String url = String.valueOf(scheme);
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
mContext.startActivity(intent);
}
catch (Exception e){
//e.printStackTrace();
}
}
else{ // [외부 앱이 설치되어있지 않은 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveQueries() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 실패]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[스키마 :: "+String.valueOf(scheme)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 안됨"+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
try {
// [구글 플레이스토어 앱에서 이동한다]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
mContext.startActivity(marketLaunch);
}
catch (Exception e){
// [구글 플레이스토어 앱이 없을 경우 홈페이지에서 이동한다]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("https://play.google.com/store/apps/details?id="+packageNames));
mContext.startActivity(marketLaunch);
//e.printStackTrace();
}
}
}
// TODO [외부 앱이 설치 여부 판단 실시 메소드]
public static String checkInstallApp(Context mContext, final String packageNames){
/**
* // -----------------------------------------
* [checkInstallApp 메소드 설명]
* // -----------------------------------------
* 1. getLaunchIntentForPackage 사용해 외부앱 설치 여부 확인 실시
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.checkInstallApp(A_Main.this, "com.test.app");
* // -----------------------------------------
* 3. 로 직 : 외부앱이 설치되지 않은 경우 [N] 값 리턴 / 설치된 경우 [Y] 값 리턴
* // -----------------------------------------
* */
// [리턴 결과 반환 변수]
String returnData = "N";
// [사전 패키지명이 널인지 체크 실시]
if (packageNames != null && packageNames.length()>0
&& !packageNames.trim().equals("") && !packageNames.trim().equals("null")){
}
else { // [패키지 명이 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> checkInstallApp() :: 외부 앱 설치 여부 확인 실시 [설치 확인 실패]]");
Log.i("","\n"+"[error :: "+"패키지명 null 널 임"+"]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return returnData;
}
// [외부앱이 설치되었는지 확인]
try {
// [특정 패키지 명이 앱에 설치 되어 있는지 확인]
Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
if (existPackage != null) { // 설치되어 있는 경우
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> checkInstallApp() :: 외부 앱 설치 여부 확인 실시 [설치 된 상태]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 됨"+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
returnData = "Y";
}
else { // 설치되지 않은 경우
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> checkInstallApp() :: 외부 앱 설치 여부 확인 실시 [설치 안된 상태]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 안됨"+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
returnData = "N";
}
}
catch (ActivityNotFoundException e) {
// [이동할 패키지 명을 찾이 못한 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> checkInstallApp() :: 외부 앱 설치 여부 확인 실시 [설치 안된 상태]]");
Log.i("","\n"+"[찾을려는 앱 :: "+packageNames+"]");
Log.i("","\n"+"[ActivityNotFoundException :: "+String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
returnData = "N";
}
catch (Exception e){
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> checkInstallApp() :: 외부 앱 설치 여부 확인 실시 [설치 안된 상태]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[Exception :: "+String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
returnData = "N";
}
return returnData;
}
// TODO [크롬 브라우저 사용해 외부 링크 이동 실시]
public static void goChromeBrowser(Context mContext, String url){
/**
* // -----------------------------------------
* [goChromeBrowser 메소드 설명]
* // -----------------------------------------
* 1. getLaunchIntentForPackage 사용해 크롬 앱 설치 여부 확인 및 외부 링크 이동 실시
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.goChromeBrowser(A_Main.this, "https://www.naver.com");
* // -----------------------------------------
* 3. 로 직 : 크롬 앱이 설치된 경우 크롬 브라우저 실행 / 크롬 브라우저가 설치되지 않은 경우 일반 브라우저 실행
* // -----------------------------------------
* */
// [크롬 브라우저 패키지명]
final String packageNames = "com.android.chrome";
// [사전 주소가 널인지 체크 실시]
if (url != null && url.length()>0
&& !url.trim().equals("") && !url.trim().equals("null")
&& url.startsWith("http") == true){
}
else { // [주소가 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goChromeBrowser() :: 크롬 브라우저 사용해 외부 링크 이동 실시 [크롬 설치 확인 실패]]");
Log.i("","\n"+"[error :: "+"주소 null 널 임"+"]");
Log.i("","\n"+"[url :: "+String.valueOf(url)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return;
}
// [URL 형식으로 파싱 가능한지 확인 실시]
try {
URL tempUrl = new URL(url);
}
catch (Exception e){
// e.printStackTrace();
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goChromeBrowser() :: 크롬 브라우저 외부 링크 이동 실패]");
Log.i("","\n"+"[error :: "+"URL 주소 형식 아님 >> 인코딩 , 이스케이프 문자 체크 필요"+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
// [종료 실시]
return;
}
// [URL 주소 공백 제거 실시]
String urlParse = String.valueOf(url);
urlParse = urlParse.trim();
urlParse = urlParse.replaceAll(" ","");
// [url 주소 삽입]
final String urlData = urlParse;
// [외부앱이 설치되었는지 확인]
try {
// [특정 패키지 명이 앱에 설치 되어 있는지 확인]
Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
if (existPackage != null) { // [설치되어 있는 경우]
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goChromeBrowser() :: 크롬 브라우저 사용해 외부 링크 이동 실시 [크롬 설치 확인]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[상태 :: "+"외부 앱 설치 됨"+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [크롬 브라우저를 통해 외부 링크 호출]
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
intent.setPackage(packageNames); // [크롬 브라우저 지정]
intent.setData(Uri.parse(urlData));
mContext.startActivity(intent);
}
else { // [설치되지 않은 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goChromeBrowser() :: 크롬 브라우저 사용해 외부 링크 이동 실시 [크롬 설치 확인 실패]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[주 소 :: "+String.valueOf(urlData)+"]");
Log.i("","\n"+"[로 직 :: "+"크롬 브라우저 사용해 외부 링크 이동 실시"+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
// [일반 기본 설정된 브라우저로 이동]
goNormalBrowser(mContext, urlData);
}
}
catch (ActivityNotFoundException e) {
// TODO [이동할 패키지 명을 찾이 못한 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goChromeBrowser() :: 크롬 브라우저 사용해 외부 링크 이동 실시 [크롬 설치 확인 실패]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[주 소 :: "+String.valueOf(urlData)+"]");
Log.i("","\n"+"[로 직 :: "+"일반 브라우저 사용해 외부 링크 이동 실시"+"]");
Log.i("","\n"+"[ActivityNotFoundException :: "+String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
// [일반 기본 설정된 브라우저로 이동]
goNormalBrowser(mContext, urlData);
}
catch (Exception e){
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goChromeBrowser() :: 크롬 브라우저 사용해 외부 링크 이동 실시 [크롬 설치 확인 실패]]");
Log.i("","\n"+"[찾을려는 앱 :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[주 소 :: "+String.valueOf(urlData)+"]");
Log.i("","\n"+"[로 직 :: "+"일반 브라우저 사용해 외부 링크 이동 실시"+"]");
Log.i("","\n"+"[Exception :: "+String.valueOf(e.getMessage())+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
// [일반 기본 설정된 브라우저로 이동]
goNormalBrowser(mContext, urlData);
}
}
// TODO [일반 브라우저 사용해 외부 링크 이동 실시]
public static void goNormalBrowser(Context mContext, String url){
/**
* // -----------------------------------------
* [goNormalBrowser 메소드 설명]
* // -----------------------------------------
* 1. 일반 브라우저 외부 링크 이동 실시
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.goNormalBrowser(A_Main.this, "https://www.naver.com");
* // -----------------------------------------
* */
try {
// [사전 주소가 널인지 체크 실시]
if (url != null && url.length()>0
&& !url.trim().equals("") && !url.trim().equals("null")
&& url.startsWith("http") == true){
}
else { // [주소가 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goNormalBrowser() :: 일반 브라우저 사용해 외부 링크 이동 실패]");
Log.i("","\n"+"[error :: "+"주소 null 널 임"+"]");
Log.i("","\n"+"[url :: "+String.valueOf(url)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return;
}
// [URL 주소 공백 제거 실시]
String urlParse = String.valueOf(url);
urlParse = urlParse.trim();
urlParse = urlParse.replaceAll(" ","");
// [url 주소 삽입]
final String urlData = urlParse;
// [로그 출력 실시]
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goNormalBrowser() :: 일반 브라우저 사용해 외부 링크 이동 실시]");
Log.i("","\n"+"[주소 : "+String.valueOf(urlData)+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [일반 브라우저 외부링크 이동 실시]
Intent go = new Intent(Intent.ACTION_VIEW);
go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
go.setData(Uri.parse(urlData));
mContext.startActivity(go);
}
catch (Exception e){
e.printStackTrace();
}
}
// TODO [마켓이동 실시 메소드]
public static void goMarketRun(Context mContext, final String packageNames){
/**
* // -----------------------------------------
* [goMarketRun 메소드 설명]
* // -----------------------------------------
* 1. 패키지 명을 사용해 구글 플레이스토어 마켓 이동 실시
* // -----------------------------------------
* 2. 호출 방법 : C_MoveApp.goMarketRun(A_Main.this, "com.test.app");
* // -----------------------------------------
* */
// [사전 패키지명이 널인지 체크 실시]
if (packageNames != null && packageNames.length()>0
&& !packageNames.trim().equals("") && !packageNames.trim().equals("null")){
}
else { // [패키지 명이 널인 경우]
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goMarketRun() :: 앱 마켓 이동 실시 [실패]]");
Log.i("","\n"+"[error :: "+"패키지명 null 널 임"+"]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.e("//===========//","================================================");
Log.i("---","---");
return;
}
// [마켓 이동 실시]
try {
Log.i("---","---");
Log.w("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goMarketRun() :: 앱 마켓 이동 실시 [수행]]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.w("//===========//","================================================");
Log.i("---","---");
// [구글 플레이스토어 앱에서 이동한다]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
mContext.startActivity(marketLaunch);
}
catch (Exception e){
Log.i("---","---");
Log.e("//===========//","================================================");
Log.i("","\n"+"[C_MoveApp >> goMarketRun() :: 앱 마켓 이동 실시 [에러]]");
Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
Log.i("","\n"+"[로 직 :: http 주소로 마켓 이동 실시]");
Log.e("//===========//","================================================");
Log.i("---","---");
// [구글 플레이스토어 앱이 없을 경우 홈페이지에서 이동한다]
Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
marketLaunch.setData(Uri.parse("https://play.google.com/store/apps/details?id="+packageNames));
mContext.startActivity(marketLaunch);
//e.printStackTrace();
}
}
} // TODO [클래스 종료]
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
Comments