android, how to get package name?

2019-04-06 05:20发布

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?

6条回答
smile是对你的礼貌
2楼-- · 2019-04-06 05:48

Use following

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

                        String packageName2 = am.getRunningTasks(1).get(0).topActivity.getPackageName();
查看更多
欢心
3楼-- · 2019-04-06 06:03

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

MyClassConstructor(Context context){

        String packageName = context.getPackageName(); 
}
查看更多
该账号已被封号
4楼-- · 2019-04-06 06:03

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

查看更多
唯我独甜
5楼-- · 2019-04-06 06:04

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楼-- · 2019-04-06 06:04

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

ClassConstructor(Context context){

        String packageName = context.getPackageName(); 
}
查看更多
地球回转人心会变
7楼-- · 2019-04-06 06:09

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);
查看更多
登录 后发表回答