Android
 Computer >> コンピューター >  >> プログラミング >> Android

AndroidでIntentを使ってブラウザで特定のURLを開く方法を解説

このチュートリアルでは、AndroidアプリからIntent(インテント)を使ってブラウザを起動し、特定のURLを開く方法を解説します。

実装の全体像

今回作成するのは、ボタンをタップすると指定したURLがブラウザで開くシンプルなアプリです。実装の手順は以下の4ステップです。

  1. Android Studioで新規プロジェクトを作成
  2. レイアウトファイル(activity_main.xml)にボタンを配置
  3. MainActivity.javaにインテント発行処理を実装
  4. AndroidManifest.xmlにパーミッションを宣言

ステップ1:新規プロジェクトの作成

Android Studioを起動し、File → New Projectを選択します。必要事項をすべて入力して、新しいプロジェクトを作成しましょう。

ステップ2:レイアウトファイル(activity_main.xml)の編集

res/layout/activity_main.xmlに以下のコードを追加します。画面中央に「Get URL from Intent」というラベルのボタンを配置しています。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:tools="https://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:padding="8dp"
   tools:context=".MainActivity">
   <Button
      android:onClick="GetUrlFromIntent"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Get URL from Intent"
      android:layout_centerInParent="true"/>
</RelativeLayout>

ステップ3:MainActivity.javaの編集

src/MainActivity.javaに以下のコードを追加します。

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
   }
   public void GetUrlFromIntent(View view) {
      String url = "https://www.google.com";
      Intent i = new Intent(Intent.ACTION_VIEW);
      i.setData(Uri.parse(url));
      startActivity(i);
   }
}

コードのポイント

  • Intent.ACTION_VIEW:データをユーザーに表示するための標準的なアクションです。このアクションを処理できるアプリ(ブラウザなど)が起動候補になります。
  • Uri.parse(url):文字列のURLをUriオブジェクトに変換し、setData()メソッドでインテントに渡しています。
  • startActivity(i):インテントを発行すると、システムが適切なブラウザアプリを自動的に選択して起動します。

ステップ4:AndroidManifest.xmlの編集

androidManifest.xmlに以下のコードを追加します。インターネット上のURLへアクセスするため、INTERNETパーミッションの宣言が必要になる点に注意してください。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
   <uses-permission android:name="android.permission.INTERNET"/>
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

アプリの実行と動作確認

それでは、アプリを実行してみましょう。ここでは、実際のAndroid端末をパソコンに接続しているものとして説明を進めます。Android Studioからアプリを実行するには、プロジェクト内のいずれかのアクティビティファイルを開き、ツールバーのRunアイコンをクリックします。ドロップダウンから接続済みのモバイルデバイスを選択すると、端末に以下のような初期画面が表示されます。

AndroidでIntentを使ってブラウザで特定のURLを開く方法を解説

AndroidでIntentを使ってブラウザで特定のURLを開く方法を解説

画面中央のボタンをタップすると、指定したURL(https://www.google.com)がデフォルトのブラウザで開きます。このように、わずか数行のコードで外部ブラウザとの連携を実装できるのが、Androidのインテント機構の強力なところです。

  1. Androidアプリ内のリンクをすべてChromeで直接開く方法【Chromer活用ガイド】

    Androidユーザーなら、誰もが「WebView」と呼ばれるブラウザに触れたことがあるはずです。名前を知らなくても、必ず一度は使ったことがあるでしょう。WebViewとは、FacebookやTwitterなどサードパーティ製アプリに組み込まれている簡易的なアプリ内ブラウザのこと。たとえばFacebookのタイムラインでリンクをタップすると、Chromeではなくアプリの中に閉じ込められた小さなブラウザでページが開きます。 このアプリ内ブラウザには、いくつかの大きな欠点があります。 機能が限定的:最低限の機能しかなく、動作も遅い ログイン情報が引き継げない:Cookie、履歴、ブックマークな

  2. 【Android】「URLを開くためのアプリが見つかりません」エラーの原因と解決策を徹底解説

    Androidは、Googleが開発・配布している世界で最も人気のあるモバイルOSの一つです。Linuxカーネルをベースとしたオープンソースソフトウェアで構成されており、2007年に初めて発表されました。執筆時点での最新安定版はAndroid 9(Pie)で、世界中で20億人以上のユーザーに利用されています。しかし最近、Androidスマートフォンで「URLを開くためのアプリが見つかりません(No App Found to Open URL)」というエラーが発生するという報告が多数寄せられています。このエラーが発生すると、メッセージやブラウザ内のリンクをタップしてもページが開けなくなってしまい