본문 바로가기

안드로이드/자바

[안드로이드/Android] 설치된 어플 확인

반응형

 

안녕하세요


요번 포스팅에서는 간단한 사항에 대해 다뤄보도록 하겠습니다.


앱을 개발하다보면 


사용자 단말기에 sns등의 타앱 설치 유무를 체크해, 해당 앱을 실행하거나 설치를 유도할 경우가 있습니다.




수정내용

2019.02.18 : 특정 앱 실행시키는 코드 추가 




1. 특정 앱 설치유무 체크


패키지명을 파라미터로 받아 설치 유무를 리턴해주는 메소드 입니다.



private boolean
isInstallApp(String pakageName){
Intent intent = mContext.getPackageManager().getLaunchIntentForPackage(pakageName);

if(intent==null){
//미설치
return false;
}else{
//설치
return true;
}
}


2. 설치된 모든 앱 정보


앱에 설치된 모든 앱들의 정보를 출력하는 메소드입니다.



private void
getInstallApllList(){

PackageManager packageManager = mContext.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> AppInfos = packageManager.queryIntentActivities(intent, 0);
for (ResolveInfo info : AppInfos) {
ActivityInfo ai = info.activityInfo;
Log.d("app name", ai.loadLabel(packageManager).toString());
Log.d("app package Name",""+ai.packageName);
int resId = ai.applicationInfo.icon; //icon
}
}


3. 특정 외부 앱 실행시키기 


앱을 실행 시키기 위해선 그 앱에 스키마/호스트를 알아야 실행시킬 수 있습니다.

스키마://호스트로 실행 가능하며 구글 마켓은 스키마 : market:, 호스트 : details 입니다.


간혹 스토어가 설치되어 있지 않거나, 루팅된 단말일 경우 'ActivityNotFoundException' 에러가 발생하기때문에 아래와 같이 try / catch문을 통해 예외처리를 해주시면 좋습니다. 



try
{
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}


문의사항 및 이의사항에 대해서는 댓글이나 방명록으로 남겨주시면 확인후 신속하게 처리하겠습니다.

감사합니다.

 


반응형