본문 바로가기

Android/Package

안드로이드/Android 어플리케이션(패키지) 마다 APP_ID(description) 부여 하기

안드로이드/Android 어플리케이션(패키지) 마다 APP_ID(description) 부여 하기



안드로이드 프로젝트를 진행하다 보면 어플리케이션(각각의 패키지) 마다 구별을 해야 할 경우가 생기는 데요. 현재 사용중인 단말에 어떤 어플리케이션이 설치되어 있고, 그 설치된 어플리케이션을 구분 하기에 좋은 방법 입니다.


바로 AndroidManifest.xml <application></application>에서 제공하는 android:description 속성을 이용하는 것인데요. 사용방법은 간단 합니다. 


<application
       android:description="@string/app_id"
       android:icon="@drawable/ic_launcher"
       android:label="@string/app_name" 
        >
 


이렇게 선언해 주시면 되는데요.!! 지금 @String/app_id 에는 "DEVICE_001" 이라는 값이 저장 되어있습니다. 그러면 이 어플리케이션의 description 이 "DEVICE_001" 로 설정이 되는 것 입니다. description은 설명, 명세 등으로 해석되는데요, "어플리케이션 설명" 이라고 해석하시면 될 거 같네요. 


또한 꼭 description을 app_id로 설정할 필요는 없으며, 원하시는 String값을 참조 시켜 주면 되는 것 입니다. 그리고 "app.loadDescription(manager)" 처럼 패키지명을 사용해서 AplictionInfo 클래스에 넣어준후 description, label, icon(Drawable) 등으로도 받아 올 수 있습니다. 결국에는 AndroidManifest.xml에 선언한 <Application> 정보를 얻어오는 것이 겠죠? 그러므로 상황에 맞는 설정과 값을 셋팅해주면 되겠습니다.

 

자 그럼!! 코드상에서 어플리케이션의 description을 어떻게 얻어 오는지 알아볼까요? 얻어 오는 방법은 바로 PackageManager 를 활용한 방법 입니다. (label과 icon도 동일한 방법 입니다. app.loadLabel(manager), app.loadIcon(manager) 형태가 되겠죠?)


PackageManager를 패키지를 검색해서 패키지와 동일한 어플리케이션을 찾아낸후 그 어플리케이션의 description을 얻어오는 방법 입니다. 이 방법이 가능한 이유는 안드로이드 어플리케이션을 단말에 설치할때, 중복된 패키지는 설치를 할 수 없으므로, 각각의 어플리케이션이 유일한 패키지를 갖게 되기 때문입니다.


package arabiannight.tistroy.com.getappid;

import android.app.Activity;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import android.util.Log;

public class TestGetAppIDActivity extends Activity {
	
	private static final String CHECK_PACKAGE_NAME = 
			"ARABIANNIGHT.TISTROY.COM.GETAPPID";
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
		try {
			PackageManager manager = getPackageManager();
			PackageInfo pack = manager.getPackageInfo(CHECK_PACKAGE_NAME.
					toLowerCase(), PackageManager.GET_META_DATA);
			ApplicationInfo app = pack.applicationInfo;
			String b_appId = (String) app.loadDescription(manager) + "";
			Log.d("test", "App_ID = " + b_appId);
		
		}catch (NameNotFoundException NNE) {
			NNE.printStackTrace();
			Log.d("test", "패키지가 존재하지 않습니다."); 
		}
    }
}




어플리케이션의 description 을 얻어오는 방법을 알아봤습니다. 생각보다 간단하죠?ㅎㅎ 아래는 프로젝트를 실행한 후 결과 화면 입니다. APP_ID 는 DEVICE_001 로 찍힌 것을 볼 수 있습니다. 하지만 사실은 어플리케이션의 description 값을 가져와서 APP_ID 처럼 사용한 것이 겠죠?ㅎㅎ

 
 04-06 00:01:47.718: D/test(10708): App_ID = DEVICE_001 



하하.!! 어 근데 패키지명은 유일한 어플리케이션을 나타낸다는데... 패키지명은 어떤값을 넣어서 확인해야 되나요??! 좋은 질문입니다. 패키지 명은 바로 아까도 말씀드렸듯이 AndroidManifest.xml 에 파일에서 확인 하실 수 있습니다.


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="arabiannight.tistroy.com.getappid"
        android:versionCode="1"
        android:versionName="1.0" >



바로 package="arabiannight.tistroy.com.getappid" 요 부분을 사용 하시면 됩니다.!! 자 이제 설명이 끝났습니다. 원하는 부분에 맞게 유용하게 사용 하시기 바랍니다.!!


파일첨부 : 


TestGetAppID.zip