Android Studio unable to display version number on app

Viewed 67

I am trying to add my app version to the app. Below is my code

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@color/white">
 <PreferenceCategory android:title="Version">
    <EditTextPreference
        android:key="@string/version"
        />
</PreferenceCategory>
</PreferenceScreen>

Fragment

import com.example.thumbsol.accuratesurvey.BuildConfig;
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


    String verName = BuildConfig.VERSION_NAME;
    int verCode = BuildConfig.VERSION_CODE;
    // Load the preferences from an XML resource
    addPreferencesFromResource(R.xml.preferences);
    version = (EditTextPreference)findPreference(getString(R.string.version));
    version.setText(verName);
}

GUI

enter image description here

Update 1

Below is my gradle

defaultConfig {
    applicationId "com.example.thumbsol.accuratesurvey"
    minSdkVersion 19
    targetSdkVersion 33
    versionCode 3
    versionName "3.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    vectorDrawables.useSupportLibrary = true

}

It doesn't show any version name. Although I have debugged the code and checked it.

Any help would be highly appreciated.

3 Answers

In order to use BuildConfig.VERSION_NAME you need to set it inside your applications build.gradle file.

android {
   ...
   defaultConfig {
      ...
      versionName "1.1.0"
      versionCode 11
   }

try this to read android version and app name.

 private String versionName,appVersion;

 versionName = BuildConfig.VERSION_NAME;
 appVersion = versionName.substring(0, 5).trim();
 Log.i("versionName:", versionName);
 Log.i("Version Name :", appVersion);

Example usage available.

SettingsActivity.java -> Your.

public class SettingsActivity extends PreferenceActivity {
    
    public static final String TAG = "caveman";
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        addPreferencesFromResource(R.xml.pref_general);
    
        Preference pref = findPreference( "developer" );
        pref.setSummary("Marathon Apps");
    
        Preference pref1 = findPreference( "version" );
        try {
            pref1.setSummary(appVersion());
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
    }
    
    @Override
    protected void onPostCreate(Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
    
        LinearLayout root = (LinearLayout)findViewById(android.R.id.list).getParent().getParent().getParent();
        Toolbar bar = (Toolbar) LayoutInflater.from(this).inflate(R.layout.tool_bar, root, false);
        root.addView(bar, 0); // insert at top
        bar.setTitle("Prism");
        bar.setSubtitle("Settings");
        bar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
    
    public String appVersion() throws PackageManager.NameNotFoundException {
        PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
        String version = pInfo.versionName;
        return version;
    }

pref_settings.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:title="About">
<PreferenceScreen
    android:title="Developer"
    android:key="developer"
    android:summary="Marathon Apps">
</PreferenceScreen>

<PreferenceScreen
    android:title="Version"
    android:key="version"
    android:summary="1.0">
</PreferenceScreen>
</PreferenceCategory>


</PreferenceScreen>
Related