Pertanyaan Bagaimana cara mendapatkan nomor versi / versi dari aplikasi Android Anda?


Saya perlu mencari tahu cara mendapatkan atau membuat nomor build untuk aplikasi Android saya. Saya membutuhkan nomor build untuk ditampilkan di UI.

Apakah saya harus melakukan sesuatu dengan AndroidManifest.xml?


954
2018-01-06 14:43


asal


Jawaban:


Menggunakan:

try {
    PackageInfo pInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
    String version = pInfo.versionName;
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

Dan Anda bisa mendapatkan kode versi dengan menggunakan ini

int verCode = pInfo.versionCode;

1777
2017-07-06 08:54



Jika Anda menggunakan plugin Gradle / Android Studio, mulai versi 0.7.0, kode versi dan nama versi tersedia secara statis di BuildConfig. Pastikan Anda mengimpor paket aplikasi Anda, dan bukan yang lain BuildConfig:

import com.yourpackage.BuildConfig;
...
int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;

Tidak ada objek Konteks yang dibutuhkan!

Juga pastikan untuk menentukannya di Anda build.gradle bukan file AndroidManifest.xml.

defaultConfig {
    versionCode 1
    versionName "1.0"
}

1445
2018-01-14 16:45



Versi sedikit lebih pendek jika Anda hanya ingin nama versi.

String versionName = context.getPackageManager()
    .getPackageInfo(context.getPackageName(), 0).versionName;

402
2018-04-26 10:22



Menggunakan Gradle dan BuildConfig

Mendapatkan VERSION_NAME dari BuildConfig

BuildConfig.VERSION_NAME

Ya, semudah itu sekarang.

Apakah Ini Mengembalikan String Kosong untuk VERSION_NAME?

Jika Anda mendapatkan string kosong untuk BuildConfig.VERSION_NAME kemudian baca terus.

Saya terus mendapatkan string kosong untuk BuildConfig.VERSION_NAME karena saya tidak mengatur versionName di file build Grade saya (saya bermigrasi dari ANT ke Gradle). Jadi, berikut adalah petunjuk untuk memastikan Anda mengaturnya VERSION_NAME melalui Gradle.

build.gradle

def versionMajor = 3
def versionMinor = 0
def versionPatch = 0
def versionBuild = 0 // bump for dogfood builds, public betas, etc.

android {

  defaultConfig {
    versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild

    versionName "${versionMajor}.${versionMinor}.${versionPatch}"
  }

}

Catatan: Ini dari yang ahli Jake Wharton.

Menghapus versionName dan versionCode dari AndroidManifest.xml

Dan karena Anda telah mengatur versionName dan versionCode dalam build.gradle file sekarang, Anda juga dapat menghapusnya dari Anda AndroidManifest.xml file, jika mereka ada di sana.


125
2018-02-05 19:13



Ada dua bagian yang Anda butuhkan: android: versionCode android: versionName

versionCode adalah angka, dan setiap versi aplikasi yang Anda kirimkan ke Market harus memiliki angka yang lebih tinggi daripada yang terakhir.

VersionName adalah string, dan bisa menjadi apa pun yang Anda inginkan. Di sinilah Anda mendefinisikan aplikasi Anda sebagai "1.0" atau "2.5" atau "2 Alpha EXTREME!" atau terserah.

Contoh:

Untuk mengaksesnya dalam kode, lakukan sesuatu seperti:

PackageManager manager = this.getPackageManager();
PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
Toast.makeText(this,
     "PackageName = " + info.packageName + "\nVersionCode = "
       + info.versionCode + "\nVersionName = "
       + info.versionName + "\nPermissions = " + info.permissions, Toast.LENGTH_SHORT).show();

122
2018-02-08 04:31



BuildConfig.VERSION_NAME //version name from your build file
BuildConfig.VERSION_CODE //version code from your build file

Saya tidak melihat kebutuhan untuk mendapatkannya dari manajer paket


55
2018-01-29 04:05



Ini dia solusi bersih, berdasarkan solusi scottyab (diedit oleh Xavi). Ini menunjukkan bagaimana mendapatkan konteksnya lebih dulu, jika tidak disediakan oleh metode Anda. Lebih jauh lagi, ia menggunakan banyak baris daripada memanggil beberapa metode per baris. Ini membuatnya lebih mudah ketika Anda harus melakukan debug aplikasi Anda.

Context context = getApplicationContext(); // or activity.getApplicationContext()
PackageManager packageManager = context.getPackageManager();
String packageName = context.getPackageName();

String myVersionName = "not available"; // initialize String

try {
    myVersionName = packageManager.getPackageInfo(packageName, 0).versionName;
} catch (PackageManager.NameNotFoundException e) {
    e.printStackTrace();
}

Sekarang Anda menerima nama versi dalam String myVersionName, Anda dapat mengaturnya ke TextView atau apapun yang Anda suka ..

// set version name to a TextView
TextView tvVersionName = (TextView) findViewById(R.id.tv_versionName);
tvVersionName.setText(myVersionName);

50
2017-08-21 08:54



Jika Anda menggunakan PhoneGap, maka buat plugin PhoneGap khusus:

Buat kelas baru di paket aplikasi Anda:

package com.Demo; //replace with your package name

import org.json.JSONArray;

import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;

import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
import com.phonegap.api.PluginResult.Status;

public class PackageManagerPlugin extends Plugin {

    public final String ACTION_GET_VERSION_NAME = "GetVersionName";

    @Override
    public PluginResult execute(String action, JSONArray args, String callbackId) {
        PluginResult result = new PluginResult(Status.INVALID_ACTION);
        PackageManager packageManager = this.ctx.getPackageManager();

        if(action.equals(ACTION_GET_VERSION_NAME)) {
            try {
                PackageInfo packageInfo = packageManager.getPackageInfo(
                                              this.ctx.getPackageName(), 0);
                result = new PluginResult(Status.OK, packageInfo.versionName);
            }
            catch (NameNotFoundException nnfe) {
                result = new PluginResult(Status.ERROR, nnfe.getMessage());
            }
        }

        return result;
    }
}

Di plugins.xml, tambahkan baris berikut:

<plugin name="PackageManagerPlugin" value="com.Demo.PackageManagerPlugin" />

Di dalam Anda acara deviceready, tambahkan kode berikut:

var PackageManagerPlugin = function() {

};
PackageManagerPlugin.prototype.getVersionName = function(successCallback, failureCallback) {
    return PhoneGap.exec(successCallback, failureCallback, 'PackageManagerPlugin', 'GetVersionName', []);
};
PhoneGap.addConstructor(function() {
    PhoneGap.addPlugin('packageManager', new PackageManagerPlugin());
});

Kemudian, Anda bisa mendapatkan atribut versionName dengan melakukan:

window.plugins.packageManager.getVersionName(
    function(versionName) {
        //do something with versionName
    },
    function(errorMessage) {
        //do something with errorMessage
    }
);

Berasal dari sini dan sini.


23
2018-03-12 21:50



Cara yang sangat sederhana adalah:

private String appVersion = BuildConfig.VERSION_NAME;

20
2018-01-20 13:55



Selalu lakukan dengan try catch blok:

String versionName = "Version not found";

try {
    versionName = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionName;
    Log.i(TAG, "Version Name: " + versionName);
} catch (NameNotFoundException e) {
    // TODO Auto-generated catch block
    Log.e(TAG, "Exception Version Name: " + e.getLocalizedMessage());
}

8
2018-05-28 06:43