{ // Given (前提条件: ログイン画面を開いている) val fragment = Fragment() activity.add(fragment) val helpLinkUrl = generateHelpLink(language = "ja", country = "JP") // When (操作:ヘルプリンクを押す) fragment.openBrowser(url = helpLinkUrl, errorCallback = { e -> fail(e) }) // Then (結果:ChromeがURLを開く) val openedActivity = Shadows.shadowOf(activity).nextStartedActivity val openedPackage = openedActivity.getPackage() Truth.assertThat(openedPackage).isEqualTo("com.android.chrome") val openedUrlString = openedActivity.data.toString() Truth.assertThat(openedUrlString).isEqualTo(helpLinkUrl) } // 実装 fun Fragment.openBrowser( url: String, errorCallback: (e: Exception) -> Unit = { e -> // エラー処理 }, ) { try { val chromeIntent = Intent(Intent.ACTION_VIEW, url.toUri()) chromeIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK chromeIntent.setPackage("com.android.chrome") startActivity(chromeIntent) } catch (e: Exception) { errorCallback(e) } } (1) 接続先情報と端末の言語設定に応じたヘルプページのURLを生成する 日本語 / 日本サーバー の組合せ 英語 / 日本サーバー の組合せ 簡 簡 簡 / 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 繁体字 / 日本サーバー の組合せ その他 / 日本サーバー の組合せ 日本語 / 米国サーバー の組合せ 英語 / 米国サーバー の組合せ 簡体字 / 米国サーバー の組合せ 繁体字 / 米国サーバー の組合せ その他 / 米国サーバー の組合せ 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 / 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 簡 (2) ログイン画面でヘルプリンクが押されると、1.で生成したURLを Chromeに渡し、ヘルプページを開く 24