我怎样才能在android中获取包名?

我需要自己写一些util类,我需要Android应用程序的包名。 虽然我发现packageManager只能用在有上下文的Activity等等。 我只想在我的类中获取将在android应用程序中使用的packagename。 那我该怎么做呢? 谢谢!

Solutions Collecting From Web of "我怎样才能在android中获取包名?"

使用: getPackageManager().getPackageInfo(getPackageName(), 0).packageName或者只是MyContext.getPackageName()

你也可以创build一个函数:

 public String getPackageName(Context context) { return context.getPackageName(); } 

下面的常量可以不需要上下文。

 BuildConfig.APPLICATION_ID 

你可以得到安装的应用程序的包名称:

 ArrayList<PackageInfo> res = new ArrayList<PackageInfo>(); PackageManager pm = getApplicationContext().getPackageManager(); List<PackageInfo> packs = pm.getInstalledPackages(0); 

如果你想find你的应用程序的包名称:

 context.getPackageName(); 

getApplicationContext().getPackageName()将给出包名。

 List<ApplicationInfo> packages; PackageManager pm; pm = getPackageManager(); get a list of installed apps. packages = pm.getInstalledApplications(0); ActivityManager mActivityManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); for (ApplicationInfo packageInfo : packages) { //packageInfo.packageName contains package name } 

我已经看到以下两种方法从一个Contextvariables开始获取包名:

 context.getPackageManager().getPackageInfo(context.getPackageName(), 0).packageName 

 context.getPackageName() 

他们会不会总是给出同样的答案? 在某些情况下,有一种方法比另一种更适合使用吗?

你可以这样创build一个Util类:

 public class AppInfo{ private static Context cxt; public static String PACKAGE_INFO; public static String init(Context context){ cxt = context; PACKAGE_INFO = cxt.getPackageName(); } } 

那么你可以这样使用它

 public class MyActivity extends Activity{ @Override public void onCreate(Bundle bundle){ ... AppInfo.init(getApplicationContext()); ... } } 

那么你可以这样调用它:

 public class someClass{ public void someMethod(){ String packageInfo = AppInfo.PACKAGE_INFO; //Do what you wish } } 

我认为getPackageName()可以直接在活动中使用,而不用调用getApplicationContext 。 检查一下自己。工作很好。