2014-09-30 37 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