Androidで自身のアプリのPlay Storeを開く
まずは結論
以下のコードが良いようです。
fun openMyAppPlayStore() {
val id = BuildConfig.applicationIdForStore
try {
context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + id)))
} catch (anfe: android.content.ActivityNotFoundException) {
context.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + id)))
}
}
BuildConfig.applicationIdForStore
は追加で設定したもので詳細は後で記載します。
コード解説
try-catchしているandroid.content.ActivityNotFoundException
はPlay Storeアプリを無効にしているAndroid端末で発生します。
例外発生時はブラウザでPlay Storeを開く実装にしていますが、Play Storeアプリが無効だとアプリのインストールができないので、エラーメッセージの方が良いかもしれません。
BuildConfig.applicationIdForStore
Android開発ではBuild Variants
毎にapplicationIdSuffix
を付与していることが多いと思います。
android {
buildTypes {
debug {
applicationIdSuffix = ".debug"
}
staging {
applicationIdSuffix ".stg"
}
release {
}
}
}
このような環境でBuildConfig.APPLICATION_ID
を使ってPlayStoreを開くとrelease以外はSuffixが付与されているため正常に動作しません。
そのためいずれのBuild Variants
でも正常にPlay Storeを開けるようにSuffixなしのApplicationIdを参照できるようにBuildConfig.applicationIdForStore
を追加しました。
独自のBuildConfigの値はbuild.gradleで以下のように設定できます。
android {
defaultConfig {
applicationId "com.hoge.fuga"
// Play Store遷移時に Suffix なしの applictionId が必要なため追加します。
buildConfigField "String", "applicationIdForStore", "\"${applicationId}\""
}
}