无法从Android Manifest文件中获取版本号字符串

时间:2014-09-30 08:58:46

标签: android

我有一个带有版本属性的android清单文件。但是,当我从我的代码中读取这些属性时,即使我更改了清单文件中的值,它也会返回相同的值。我正在编写以下代码,请告诉我代码中的错误。

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_about, container, false);

        TextView txtVersion = (TextView) rootView.findViewById(R.id.about_text);

        FragmentActivity activity = getActivity();
        final PackageManager packageManager = activity.getPackageManager();

        try{
            if(packageManager != null){
                PackageInfo packageInfo = packageManager.getPackageInfo(activity.getPackageName(),0);
                txtVersion.setText(packageInfo.versionName); // get same value even make changes in manifest file.
            }
        }
        catch (NameNotFoundException ex){
            Log.e("tag", ex.getMessage());
        }
        return rootView;
    }

4 个答案:

答案 0 :(得分:0)

在您的代码中,您可以:

txtVersion.setText(packageInfo.versionName); // get same value even make changes in manifest file.  

以后几行:

txtVersion.setText("");  

这将清除TextView,不是吗? :)

因此,如果packageManager不为空,您将更改TextView的值,然后退出try-catch,然后清除TextView

答案 1 :(得分:0)

这是你的try / catch代码:

try{
        if(packageManager != null){
            PackageInfo packageInfo = packageManager.getPackageInfo(activity.getPackageName(),0);
            txtVersion.setText(packageInfo.versionName); // get same value even make changes in manifest file.
        }
    }
    catch (NameNotFoundException ex){
        Log.e("tag", ex.getMessage());
    }

    txtVersion.setText("");

首先检查if(packageManager != null)然后txtVersion.setText(packageInfo.versionName); ==>设置了txtVersion

然后捕获异常catch (NameNotFoundException ex)

最后那些txtVersion.setText(""); ==> txtVersion为空

所以只需删除txtVersion.setText("");即可按您的意愿使用

答案 2 :(得分:0)

  1. 尝试清理项目,然后重建
  2. 重新运行前关闭应用程序。如果您只更改清单中的版本而不更改实际的应用程序代码,那么您的应用程序可能不会重新编译,而只是被带到前台

答案 3 :(得分:0)

刚遇到这个问题并找到了解决方案。

如果您使用Android Studio和Gradle,则Gradle会覆盖versionCodeversionName

要更改此值,请在build.gradle

中更改