从Android清单获取包字符串

从Android清单获取包字符串,android,android-manifest,Android,Android Manifest,这应该很简单,但我找不到任何关于这个的信息 我只想读取android清单中的包值 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="THIS" 来自您的“主要”活动课程: String package = this.getClass().getPackage().getName(); 在活动中,只需调用getPackageName()。如果碰巧需要清单中的其他数据,可以使用Pa

这应该很简单,但我找不到任何关于这个的信息

我只想读取android清单中的包值

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="THIS"
来自您的“主要”
活动
课程:

String package = this.getClass().getPackage().getName();

在活动中,只需调用getPackageName()。如果碰巧需要清单中的其他数据,可以使用PackageInfo类:

将TextView设置为应用程序版本的示例:

    try {
        PackageManager pm = getPackageManager();
        PackageInfo packageInfo = pm.getPackageInfo(this.getPackageName(), 0);
        TextView version = (TextView) findViewById(R.id.version);
        version.setText(packageInfo.versionName);
    } catch (NameNotFoundException e) {}

值得注意的是,只有当您的主活动位于与清单包同名的包(而不是,例如,子包)中时,这才有效。类的包必须与清单中定义的包不匹配,因此这是不正确的,尽管在大多数情况下,这将起作用。这将清除问题。这可能不完全正确,因为packageInfo.versionName确实返回在gradle文件中定义的applicationId,而不是清单中的package属性。在大多数情况下,这是相同的,它可以正常工作,但当您使用buildFlavors更改应用程序ID时,它将不再工作。除了通过
R
-类访问包attribtue之外,我也找不到任何解决方案。也就是说,package属性只影响
R
-类的包名,而不影响applicationId,也不影响普通类包