2014-09-30 76 views
1

我有一个具有版本属性的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; 
    } 
+0

你有没有尝试清理项目? – 2014-09-30 09:01:31

+0

你有没有试过Build.VERSION.CODENAME变量? – Govtart 2014-09-30 09:04:57

+0

我试图清理项目并重建,但不是。我也尝试了Build.VERSION.CODENAME变量,它显示'REL'不是我设置的版本号。 – 2014-09-30 15:25:39

回答

0

在你的代码做:

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

和几行后:

txtVersion.setText(""); 

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

所以,如果packageManager不为空,你将改变TextView的值,然后来了try-catch出来,然后清除TextView

+0

对不起,其实我的代码中没有这样的东西。我错误地添加了txtVersion.setText(“”);当显示我的示例代码。我为我的错误道歉。 – 2014-09-30 10:38:49

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)

后finaly所有这些txtVersion.setText(""); ==> txtVersion是空

所以只是删除txtVersion.setText("");的,将工作,只要你想

0
  1. 尝试清理项目,然后重建
  2. 关闭应用程序在重新运行之前。如果您只更改清单中的版本并且不更改实际的应用程序代码,则很可能您的应用程序没有重新编译,但只是被带到前台
0

刚刚发生此问题并找到解决方案。

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

为了改变这个值改变它在build.gradle