Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
2
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@bvlion

【Android】アプリのバージョンコードを取得する(API レベル 28+)

はじめに

新規アプリは2019/8、既存アプリは2019/11からAPI レベル 28+ をターゲットとすることが必須になりました。
その対応中に気付いたので記事にしておきます。

PackageInfo.versionCodeが非推奨

versionCodeはAPI レベル 28から非推奨になりました。
screen_shot.png

対応

なので、リファレンスに沿って対応します。

自力で書く場合

fun getLongVersionCode(context: Context): Long {
    val packageInfo = context.packageManager.getPackageInfo(context.packageName, 0)
    return if (Build.VERSION.SDK_INT >= 28) packageInfo.longVersionCode else packageInfo.versionCode.toLong()
}

android.support.v4使用

fun getLongVersionCode(context: Context) =
    PackageInfoCompat.getLongVersionCode(
        context.packageManager.getPackageInfo(context.packageName, 0)
    )

感想

ついフォアグラウンドサービス対応とかに目が行ってしまいますが、こういう箇所も地味に対応していかないといけないようですね。
そしてお決まりのBuild.VERSION.SDK_INTでの分岐。。。

2
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
2
Help us understand the problem. What is going on with this article?