Android で Intent からウェブページ表示する方法とかコード例

アプリから外部ページを開きたい場面って結構あります。

  • アプリ内にプライバシーポリシーを表示したい
  • アプリ容量を減らすために説明ページを用意したい

特にプライバシーポリシーは超重要。アプリ内表示も必須(?)になったようなので、隅っこでもいいのでリンク表示しておく必要があるみたいです。

そこで忘れないために、 IntentからWebページ表示するやり方&コード例 を紹介

難しいのかなと思ってたけど。複雑なコードなしで数行でいけます。

URLを Intent から開く基本的な書き方

その手順を大雑把に箇条書きすると・・・

  • まず Intent  のインスタンス作成
  • アクションに ACTION_VIEW  を設定
  • あと setData  から開きたいURLを指定
  • あとは startActivity  からブラウザ起動

手順にすると長いけど、コードはとても短いです。

 

例えば https://example.com/  というページを開きたい場合

▼ そのコード例はコチラ

たったこれだけ。驚くほど簡単ですね。

 

ちなみにWebページをよく開くなら、
次みたいに Activity内でメソッド化しておくと楽かもしれません。

外部アプリを開くだけなので、パーミッションも特に必要ないはず

本当に数行のコードでいけるから簡単です。

ページが閉じられた後のコールバックを受け取るには

ページを開くだけなら、上で紹介したコードだけでいけます。

ただこの方法だと1つ問題点があって、

それがページが閉じられた時に結果が受け取れないこと

なので、ついでに 結果を受け取る方法 についても紹介したいと思います。

 

そのやり方は先ほどの手順を次のように改造するだけ

  • まず Intent  のインスタンス作成
  • アクションに ACTION_VIEW  を設定
  • あと setData  に開きたいURLを指定
  • 最後に startActivityForResult  を実行
  • 結果を onActivityResult  で受け取る

重要なのが最後の2つ

普通に起動するんじゃなくて、 1. startActivityResult  から Intent を実行 ⇒ 2.その結果を onActivityResult  をオーバーライドして受け取り みたいな実装が必要です。

 

実際のコード例はこんな感じ

1.まず Intent  からブラウザ起動でURL開く(Acitivity内)

2.Activity内で onActivityResult  オーバーライド

上の例だとリクエストコードを 12345  と適当に設定してるけど、
Activity内で定数( private final int  な変数)として定義しておくと分かりやすくなるはず

アプリ内からページを開き、そのあと設定を保存したいときとかに便利です。

ここまでのまとめ

以上、Intentからウェブページを表示する方法でした。

特にプライバシーポリシーの場合、プレイストアの掲載情報に載せるだけじゃダメで、アプリ内に表示しないと警告とかくるみたいです。(昔はそれほど厳しくなかった気がする)

そういうリスクを回避するにも、この方法が役立つかもしれません。ではでは($・・)/~~~