Androidアプリからインターネットにアクセスする方法|INTERNET権限の設定手順を解説
Androidアプリでインターネットアクセスに必要な権限
Androidアプリケーションからインターネットにアクセスするには、AndroidManifest.xmlに以下の権限(パーミッション)を宣言する必要があります。
<uses-permission android:name="android.permission.INTERNET"/>
この記事では、android.permission.INTERNET権限を使用して、AndroidアプリからGoogleのサイトを開く具体例を段階的に解説します。WebViewを使って外部のWebページを表示する流れを、実際のコードとともに確認していきましょう。
ステップ1:新しいプロジェクトを作成する
まず、Android Studioを起動し、メニューから「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項目(アプリ名、パッケージ名、保存先など)をすべて入力してプロジェクトの雛形を生成してください。
ステップ2:レイアウトファイル(activity_main.xml)を編集する
次に、res/layout/activity_main.xmlに以下のコードを追加します。ここでは、Webページを表示するためのWebViewを配置しています。
<?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:orientation="vertical"
android:padding="2dp"
tools:context=".MainActivity">
<WebView
android:id="@+id/webView"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</WebView>
</RelativeLayout>
ステップ3:MainActivity.javaにコードを記述する
続いて、src/MainActivity.javaに以下のコードを追加します。onCreate()メソッド内でWebViewを取得し、loadUrl()を使ってGoogleのページを読み込んでいます。
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
public class MainActivity extends AppCompatActivity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webView);
webView.loadUrl("https://www.google.com");
}
}
補足:近年のAndroid Studioで新規プロジェクトを作成した場合、サポートライブラリは非推奨となっており、代わりにAndroidXが使われます。その場合はインポート文をimport androidx.appcompat.app.AppCompatActivity;に置き換え、クラス宣言もpublic class MainActivity extends AppCompatActivityのままAndroidX版を利用してください。
ステップ4:AndroidManifest.xmlにINTERNET権限を追加する
最も重要なのがこのステップです。androidManifest.xmlに、冒頭で紹介した<uses-permission android:name="android.permission.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 9(APIレベル28)以降では、平文のHTTP通信(cleartext traffic)がデフォルトで禁止されています。上記サンプルのようにhttps://のURLを読み込む場合は、マニフェストの<application>タグにandroid:usesCleartextTraffic="true"を追加するか、URLをhttps://に変更することをおすすめします。
アプリを実行して動作を確認する
以上の手順が完了したら、アプリを実行してみましょう。実機のAndroidスマートフォンをPCに接続していることを前提に説明します。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーの「Run(実行)」アイコンをクリックします。デバイス選択画面で自分のモバイル端末を選択すると、端末側にアプリが起動し、WebView内にGoogleのページが表示されます。

まとめ
Androidアプリでインターネットにアクセスするためには、AndroidManifest.xmlへのINTERNET権限の宣言が必須です。今回の例のようにWebViewと組み合わせれば、簡単にWebページをアプリ内に表示できます。実際に開発を行う際は、AndroidXへの移行やHTTPS通信への対応といった最新の推奨事項にも留意しておくと、より安全で保守性の高いアプリになります。
-
Android Instant Apps(インスタントアプリ)とは?知っておくべき基本情報
Googleは常に競合他社の一歩先を行く方法を模索してきましたが、「Android Instant Apps(インスタントアプリ)」によってその答えを見つけたようです。Android Instant Appsとは一体何なのでしょうか?これは、スマートフォンの使い方を変える可能性を秘めた新しいアプリの概念です。この画期的な仕組みにより、アプリを端末にインストールすることなく、必要な機能だけにアクセスできるようになります。魅力的ですよね。Android Instant Appsの仕組み例えば、友人からBuzzFeedの動画リンクを受け取ったとしましょう。従来であれば、動画を見るためにはまずアプリを
-
Android System WebView(ASW)とは?役割と更新方法を徹底解説
Android端末のアプリ一覧や、Google Playストアのアップデート通知で「Android System WebView(AndroidシステムWebView)」という名前を目にしたことがあるかもしれません。この重要なシステムアプリは、ユーザーが直接インストールしたり操作したりするものではありませんが、Android OSにとって欠かせない存在です。 お使いのAndroidのバージョンによって、Android System WebViewはさまざまな形で提供されています。どの端末でも、ASW(またはその派生版)を有効かつ最新の状態に保つ必要があります。本記事では、その理由と、このシス