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

Androidでホスト情報をプログラムから取得する方法!Build.HOSTの実装手順を解説

Androidでホスト情報を取得する方法

この記事では、Androidアプリから端末のホスト情報(Build.HOST)をプログラムで取得する方法を解説します。

Build.HOSTは、その端末で動作しているOSイメージをビルドしたホストマシンの名前を示すシステムプロパティです。端末のビルド環境を確認したい場合などに役立ちます。

ここでは、取得したホスト情報を画面上のTextViewに表示するシンプルなサンプルアプリを、4つのステップで作成していきます。

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

Android Studioで新しいプロジェクトを作成します。メニューバーから[File] → [New Project]を選択し、必要な項目をすべて入力してプロジェクトを生成してください。

ステップ2:レイアウトファイルの作成

res/layout/activity_main.xmlに、以下のコードを記述します。

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
   xmlns:app = "https://schemas.android.com/apk/res-auto"
   xmlns:tools = "https://schemas.android.com/tools"
   android:layout_width = "match_parent"
   android:gravity = "center"
   android:layout_height = "match_parent"
   tools:context = ".MainActivity">
   <TextView
      android:id = "@+id/text"
      android:textSize = "30sp"
      android:layout_width = "match_parent"
      android:layout_height = "match_parent" />
</LinearLayout>

上記のコードでは、画面全体に広がる1つのTextViewを配置しています。このTextViewに、後ほど取得したホスト情報を表示します。

ステップ3:MainActivity.javaの実装

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

package com.example.myapplication;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
   TextView textView;
   @RequiresApi(api = Build.VERSION_CODES.P)
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      textView = findViewById(R.id.text);
      if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
         ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 101);
      }
   }
   @RequiresApi(api = Build.VERSION_CODES.O)
   @Override
   public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
      switch (requestCode) {
         case 101:
         if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            textView.setText("" + Build.HOST);
         } else {
            // 権限が許可されなかった場合
         }
         break;
         default:
         super.onRequestPermissionsResult(requestCode, permissions, grantResults);
      }
   }
   @RequiresApi(api = Build.VERSION_CODES.O)
   @Override
   protected void onResume() {
      super.onResume();
      if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
         return;
      }
      textView.setText("" + Build.HOST);
   }
}

コードのポイント

  • 権限チェックとリクエスト:onCreate()内でREAD_PHONE_STATE権限が付与されているかを確認し、未許可の場合はrequestPermissions()を呼び出して許可ダイアログを表示します。
  • 結果の受け取り:onRequestPermissionsResult()でユーザーの選択結果を受け取り、許可されていればtextView.setText("" + Build.HOST)によってホスト情報をTextViewに表示します。
  • 再表示への対応:onResume()でも改めて権限を確認し、許可済みであればホスト情報をセットします。これにより、画面復帰時にも正しく表示されます。

なお、本サンプルのコードは旧サポートライブラリ(android.support.*)を使用しています。最新のAndroid Studioでプロジェクトを作成した場合は、androidx.appcompat.app.AppCompatActivityやandroidx.core.app.ActivityCompatなど、androidx系のクラスに読み替えてください。

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

AndroidManifest.xmlに、以下のようにINTERNETおよびREAD_PHONE_STATEのパーミッション宣言を追加します。

<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "https://schemas.android.com/apk/res/android"
   package = "com.example.myapplication">
   <uses-permission android:name = "android.permission.INTERNET"/>
   <uses-permission android:name = "android.permission.READ_PHONE_STATE" />
   <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スマートフォンをPCに接続しておいてください。

Android Studioからアプリを実行するには、プロジェクト内のアクティビティファイルを開き、ツールバーの実行アイコンをクリックします。デバイス選択画面で接続した端末を選ぶと、端末側でアプリが起動し、デフォルトの画面が表示されます。権限ダイアログを許可すると、TextViewに端末のホスト情報が表示されます。

Androidでホスト情報をプログラムから取得する方法!Build.HOSTの実装手順を解説

  1. プログラムでAndroidデバイスのIPアドレスを取得する方法

    はじめにこの記事では、Androidアプリからプログラム的にデバイスのIPアドレスを取得し、画面に表示する方法を解説します。Wi-Fi接続情報を利用したシンプルなサンプルアプリを、手順を追って作成していきましょう。ステップ1:新規プロジェクトの作成まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。ステップ2:レイアウトファイル(activity_main.xml)の編集次に、以下のコードを res/layout/activity_main.xml に追加します。画

  2. 【Android開発】プログラムで画面のDPI(密度)を取得する方法を解説

    Androidで画面DPIをプログラムから取得する方法 この記事では、Androidアプリ内で画面のDPI(画面密度)をプログラム的に取得する方法を、サンプルコードとともに段階的に解説します。画面密度は、異なる解像度のデバイスに対応したUIを作成する際に非常に重要な情報です。 手順1:新しいプロジェクトを作成する Android Studioを開き、「File」→「New Project」を選択して、必要な情報を入力し、新しいプロジェクトを作成します。 手順2:レイアウトファイル(activity_main.xml)にコードを追加する res/layout/activity_main.xm