안드로이드/Android 어플리케이션(패키지) 마다 APP_ID(description) 부여 하기
안드로이드 프로젝트를 진행하다 보면 어플리케이션(각각의 패키지) 마다 구별을 해야 할 경우가 생기는 데요. 현재 사용중인 단말에 어떤 어플리케이션이 설치되어 있고, 그 설치된 어플리케이션을 구분 하기에 좋은 방법 입니다.
바로 AndroidManifest.xml에 <application></application>에서 제공하는 android:description 속성을 이용하는 것인데요. 사용방법은 간단 합니다.
|
이렇게 선언해 주시면 되는데요.!! 지금 @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 |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" |
바로 package="arabiannight.tistroy.com.getappid" 요 부분을 사용 하시면 됩니다.!! 자 이제 설명이 끝났습니다. 원하는 부분에 맞게 유용하게 사용 하시기 바랍니다.!!
파일첨부 :
'Android > Package' 카테고리의 다른 글
안드로이드/Android 패키지 설치유무와 APP ID 확인 하기~! (0) | 2012.06.26 |
---|---|
안드로이드/Android 현재 단말에 설치된 실행가능한 앱 얻어오기(패키지명 구분) (0) | 2012.06.04 |
안드로이드/Android packagemanager를 이용한 설치된 package명 확인 하기 (48) | 2012.04.03 |