2017년 9월 10일 일요일

자신의 패키지 이름 구하기


자신의 패키지 이름은 개발자가 정하는것이니 누구나 알고 있겠지만 변경 되더라도 신경안쓰도록 API형태의 이름 구하는 방법이 필요합니다. 이런걸 어디에서 사용하느냐... ???? 대표적으로 런처에서 패키지 이름들을 구하는데 자신은 나오면 좀 이상하겠죠? 그래서 자신의 패키지 명을 알아두었다가 건너뛸때 사용하면 됩니다.

아래는 자신의 패키지 이름을 구하는 예제입니다.
getApplicationContext().getPackageName()
너무 간단하여 pm.getApplicationInfo 정보를 몇가지 더 출력하여 보았습니다.

예제 소스:
public class MainActivity extends Activity {
 String PACKAGE_NAME;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

  PackageManager pm = getPackageManager();

  // 자신의 패키지 이름을 구한다.
  PACKAGE_NAME = getApplicationContext().getPackageName();

  try {
   ApplicationInfo ai = pm.getApplicationInfo(PACKAGE_NAME, PackageManager.GET_META_DATA);
   String data = "getPackageName:" + PACKAGE_NAME +
     ",packageName:" + ai.packageName +
     ",processName:"+ai.processName +
     ",className:"+ai.className +
     ",publicSourceDir:" + ai.publicSourceDir +
     ",sourceDir:" + ai.sourceDir;
   Toast.makeText(this, data, Toast.LENGTH_SHORT).show();
   Log.d("TEST",data);
  } catch (PackageManager.NameNotFoundException e) {
   e.printStackTrace();
  }
    }
}

결과
09-10 15:43:23.206 31192-31192/com.example.temp.mytempapplication D/TEST: getPackageName:com.example.temp.mytempapplication,packageName:com.example.temp.mytempapplication,processName:com.example.temp.mytempapplication,className:com.android.tools.fd.runtime.BootstrapApplication,publicSourceDir:/data/app/com.example.temp.mytempapplication-1/base.apk,sourceDir:/data/app/com.example.temp.mytempapplication-1/base.apk

getPackageName:com.example.temp.mytempapplication
packageName:com.example.temp.mytempapplication
processName:com.example.temp.mytempapplication
className:com.android.tools.fd.runtime.BootstrapApplication
publicSourceDir:/data/app/com.example.temp.mytempapplication-1/base.apk
sourceDir:/data/app/com.example.temp.mytempapplication-1/base.apk











댓글 없음:

댓글 쓰기