Android, как получить имя пакета? - PullRequest
11 голосов
/ 27 декабря 2011

В моем приложении мне нужно знать название пакета.У меня нет проблем, когда я хочу взять это в деятельности, но я не могу взять это в других классах.Следующий код работает в действии, но я не знаю, почему у него проблемы в простом классе.

String packageName = getPackageName();

В моем классе я пытался написать этот код:

Context context = getApplicationContext();
String packageName = context.getPackageName();

, но компиляторСказанный getApplicationContext() метод не определен для этого класса.

Как я могу получить имя пакета в этом классе?

Ответы [ 6 ]

14 голосов
/ 27 декабря 2011

Используя экземпляр класса, вы можете получить имя пакета, используя getClass().getPackage().getName() для экземпляра

Пример кода

ClassA instanceOfClass = new ClassA();
String packageName = instanceOfClass.getClass().getPackage().getName();
System.out.println("Package Name = " + packageName);
12 голосов
/ 27 декабря 2011

Простой или другой способ - передать Context в конструктор вспомогательного класса:

MyClassConstructor(Context context){

        String packageName = context.getPackageName(); 
}
2 голосов
/ 11 августа 2015

Если вы используете сборку Gradle, используйте это: BuildConfig.APPLICATION_ID, чтобы получить имя пакета приложения.

0 голосов
/ 28 июля 2016

Самый простой ответ - создать конструктор имени класса и передать ApplicationContext в этот конструктор -

ClassConstructor(Context context){

        String packageName = context.getPackageName(); 
}
0 голосов
/ 27 декабря 2011

Использовать следующие

ActivityManager am = (ActivityManager) getSystemService(Activity.ACTIVITY_SERVICE);

                        String packageName2 = am.getRunningTasks(1).get(0).topActivity.getPackageName();
0 голосов
/ 27 декабря 2011

getApplicationContext () - это метод ContextWrapper (суперкласс Activity).

Если вы хотите использовать его в своих классах, вам нужно будет передать ссылку на Context или его подкласс, а затем использовать его

http://developer.android.com/reference/android/content/ContextWrapper.html#getPackageName()

class MyClass {
    Context mContext;

    public MyClass(Context ctx) [
        this.mContext = ctx;

    }

    String getPackageName() {
        mContext.getPackageName();
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...