我知道Context.getApplicationContext()和View.getContext()的可用性,通过它们我实际上可以调用Context.getPackageName()来检索应用程序的包名。
如果我从一个View或Activity对象可用的方法中调用,它们就可以工作,但是如果我想从一个完全独立的没有View或Activity的类中找到包名,有没有办法(直接或间接地)做到这一点?
我知道Context.getApplicationContext()和View.getContext()的可用性,通过它们我实际上可以调用Context.getPackageName()来检索应用程序的包名。
如果我从一个View或Activity对象可用的方法中调用,它们就可以工作,但是如果我想从一个完全独立的没有View或Activity的类中找到包名,有没有办法(直接或间接地)做到这一点?
当前回答
如果你使用gradle-android-plugin来构建你的应用程序,那么你可以使用
BuildConfig.APPLICATION_ID
从任何作用域(包括静态作用域)检索包名。
其他回答
只需导入Android。App,然后你可以使用: < br / > Application.getProcessName () < br / >
获取不包含上下文、视图或活动的当前应用程序进程名。
使用: BuildConfig。APPLICATION_ID获取包名的任何地方(即;服务、接收方、活动、片段等)
例子: String PackageName = BuildConfig.APPLICATION_ID;
一个想法是在你的主活动中有一个静态变量,实例化为包名。然后引用那个变量。
你必须在主活动的onCreate()方法中初始化它:
类的全局:
public static String PACKAGE_NAME;
然后. .
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PACKAGE_NAME = getApplicationContext().getPackageName();
}
然后可以通过Main.PACKAGE_NAME访问它。
如果你使用gradle build,使用这个:BuildConfig。APPLICATION_ID获取应用程序的包名。
PackageInfo pinfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
String sVersionCode = pinfo.versionCode; // 1
String sVersionName = pinfo.versionName; // 1.0
String sPackName = getPackageName(); // cz.okhelp.my_app
int nSdkVersion = Integer.parseInt(Build.VERSION.SDK);
int nSdkVers = Build.VERSION.SDK_INT;
希望它能起作用。