반응형
안드로이드에서 설치된 앱의 버전정보를 불러 올 일이 있었습니다.
그래서 다음과 같은 메서드를 만들어서 사용하였습니다.
버전정보(String)과 버전코드(Long)을 동시에 받기위해 Pair를 사용하였습니다.
public static Pair getPackageVersionInfo(final Context context, final String packageName) {
String version = "Unknown";
long versionCode = 0;
PackageInfo packageInfo;
if (context == null) {
return null;
}
try {
packageInfo = context.getApplicationContext()
.getPackageManager()
.getPackageInfo(packageName, 0 );
version = packageInfo.versionName;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
versionCode = packageInfo.getLongVersionCode();
} else {
versionCode = (long)packageInfo.versionCode;
}
} catch (PackageManager.NameNotFoundException e) {
Tool.LogE(TAG, "getVersionInfo :" + e.getMessage());
}
return new Pair(version, versionCode);
}
※ Android API 28 (Android 9 Pie) 부터는 packageInfo의 versionCode: int가 deprecated 되어있습니다.
그래서 이후 API를 대응하기 위해서는 getLongVersionCode를 사용해야합니다.
getLongVersionCode는 다음과 같이 구현되어있습니다.
/**
* Return {@link android.R.styleable#AndroidManifest_versionCode versionCode} and
* {@link android.R.styleable#AndroidManifest_versionCodeMajor versionCodeMajor} combined
* together as a single long value. The
* {@link android.R.styleable#AndroidManifest_versionCodeMajor versionCodeMajor} is placed in
* the upper 32 bits.
*/
public long getLongVersionCode() {
return composeLongVersionCode(versionCodeMajor, versionCode);
}
반환형이 long이므로 기존 packageInfo.versionCode도 int보다 큰 long으로 변환하여 사용하였습니다.
사용방법은 다음과 같습니다.
@Override
protected void onCreate(Bundle saveInstanceState) {
String packageName = "com.testapp";
Pair packageTuple = getPackageVersionInfo(getApplicationContext(), packageName);
Log.d(TAG, "version: " + (String)packageTuple.first + " versionCode: " + (long)packageTuple.second);
}
반응형
'Development > Android' 카테고리의 다른 글
안드로이드 TextView에 HTML 태그 사용하기 (0) | 2021.03.05 |
---|---|
안드로이드 패키지명(PackageName)으로 설치여부 확인하는 방법 (0) | 2020.09.07 |
안드로이드 가로모드(혹은 세로모드) 고정하는 방법. (0) | 2020.09.05 |
안드로이드10에서 클립보드 내용 가져오기. (0) | 2020.09.05 |
[Android - Kotlin] java.lang.IllegalStateException: TextView must not be null 오류 (0) | 2019.07.30 |