android, how to get package name?

2019-04-06 05:34发布

问题:

In my application I need to know the name of package name. I have no problem when I want to grab it in activities but i can't take it in other classes. Following code is working in activity but i don't know why it has problem in simple class.

String packageName = getPackageName();

In my class I tried to write this code:

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

but compiler said getApplicationContext() method is undefined for this class.

How can I take package name within this class?

回答1:

The simple, or another way is to pass Context into the helper class constructor:

MyClassConstructor(Context context){

        String packageName = context.getPackageName(); 
}


回答2:

Using instance of the class you can get package name by using getClass().getPackage().getName() to the instance

Sample Code

ClassA instanceOfClass = new ClassA();
String packageName = instanceOfClass.getClass().getPackage().getName();
System.out.println("Package Name = " + packageName);


回答3:

If you use gradle build, use this: BuildConfig.APPLICATION_ID to get the package name of the application.



回答4:

Use following

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

                        String packageName2 = am.getRunningTasks(1).get(0).topActivity.getPackageName();


回答5:

getApplicationContext() is a method of ContextWrapper ( super class of Activity).

If you want to use it in your classes you will have to pass a reference of a Context or its subclass and then use it

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();
    }

}


回答6:

Simplest answer is make a class name constructor and pass the ApplicationContext in that constructor -

ClassConstructor(Context context){

        String packageName = context.getPackageName(); 
}