ヽ|∵|ゝ(Fantom) の 開発blog? ホーム »Android
カテゴリー「Android」の記事一覧

【Android】【Java】パーミッションの付与(許可)のチェックと要求をする  


 Android 6.0 以降からは実行時のパーミッションリクエストができるが、ググったら「ContextCompat」(または「ActivityCompat」)での例がほとんどだったので、敢えて「~Compat」を使わない実装を書いておこうと思った。実際に「~Compat」はサポートライブラリが必要となるので、使えない環境で書きたい場合もあるだろう。もちろん Android6.0(API 23)以降になってしまうが、私も Unity のプラグインでは今回の方法を用いている(サポートライブラリ等、他のライブラリを入れるとファイルサイズも大きくなるため、ほぼ全ての実装を自前でやっている)。

 なので「~Compat」で書きたい場合は、公式のデベロッパーマニュアルに載っているので、そちらの方を見れば良いだろう(基本的には同じ内容である)。

(参考)
実行時のパーミッション リクエスト


(※) Android Studio 3.1.2 / Galaxy S7 Edge (Android 7.0) / Windows10(x64) で確認



■パーミッションの許可/拒否をチェックする(static メソッド)

 ここでは汎用的に使えるように、static で定義したものを書いておこう。ライブラリとして保存しておけば使い回しも簡単にできる。

●パーミッションの許可/拒否をチェックする(static メソッド)
import android.content.Context;
import android.content.pm.PackageManager;

//パーミッションの許可(付与)チェック
public static final boolean checkPermission(final Context context, final String permission) {
final PackageManager pm = context.getPackageManager();
return (pm.checkPermission(permission, context.getPackageName()) == PackageManager.PERMISSION_GRANTED);
}

●使用例(メインでのコードなど)
import android.util.Log;

//※アクティビティでの使用例
boolean granted = checkPermission(this, "android.permission.WRITE_EXTERNAL_STORAGE"); //this は Context
Log.d("DebugTag", "granted = " + granted);

granted = false (または true)

 ここでの結果はパーミッションが許可(付与)されてない状態として false が返ってきているが、元々許可されている場合は true になる。ちなみに「READ_EXTERNAL_STORAGE」(ストレージのファイル読み取り権限)というものもあるが、これは「WRITE_EXTERNAL_STORAGE」(ストレージのファイル読み書き権限)が許可されていれば、true になる。

 また「AndroidManifedt.xml」での書き方は、基本的に <manifest>~</manifest> タグの中に書く。以下に例を挙げておこう。

●AndroidManifedt.xml に「WRITE_EXTERNAL_STORAGE」パーミッションを書く例
<manifest ~・・・(略)・・・ >
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

・・・(略)・・・
</manifest>

 パーミッション自体の文字列定数は公式のデベロッパーマニュアルを見て欲しい。

(参考)
Manifest.permission (Constant Value を使う)
<uses-permission> (name 属性だけでも良い)



■パーミッションのチェックとその理由→要求をする(インスタンス メソッド)

 次にリアルタイムにパーミッションをチェックし、必要なら(許可されてなければ)そのパーミッションが必要な理由と要求ダイアログを出す方法をやってみよう。またここでは前述した static な checkPermission() を使っても良いが、単一のアクティビティ上での実装として、インスタンスメソッドで書くことにしよう。実際には static で書いても構わない(ちなみに Unity のプラグインは static で書いてある)。

●パーミッションのチェックとその理由→要求をする(※アクティビティでの実装例)
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.widget.Toast;

//定数など
//https://developer.android.com/reference/android/Manifest.permission.html
private static final String PERMISSION_WRITE_EXTERNAL_STORAGE = "android.permission.WRITE_EXTERNAL_STORAGE"; //ストレージの読み書き権限
private static final int REQUEST_WRITE_EXTERNAL_STORAGE = 1; //※番号は任意:onRequestPermissionsResult() で合わせる

//パーミッションの許可(付与)チェック
//https://developer.android.com/training/permissions/requesting#perm-check
private boolean checkPermission(String permission) {
final PackageManager pm = getPackageManager();
return pm.checkPermission(permission, getPackageName()) == PackageManager.PERMISSION_GRANTED;
}

//パーミッションの根拠と要求(API 23 [Android 6.0])
//https://developer.android.com/training/permissions/requesting#make-the-request
private void showPermissionRationaleAndRequest(final String permission, final int requestCode) {
if (android.os.Build.VERSION.SDK_INT >= 23) { //Android 6.0

//パーミッション要求の根拠の説明を必要とするか?「今後表示しない」をチェックすると常に false になる。
boolean isShouldRationale = shouldShowRequestPermissionRationale(permission); //API 23 (Android 6.0)
if (isShouldRationale) {
//根拠の説明ダイアログを必要とするとき
AlertDialog.Builder builder = new AlertDialog.Builder(this); //this は Context //※この実装では画面回転で消えるので注意
builder.setTitle("以下の理由で○○の権限が必要です。")
.setMessage("・説明1\n・説明2\n・説明3")
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
requestPermission(permission, requestCode);
}
})
.show();
} else {
//根拠の説明ダイアログ不要のとき
requestPermission(permission, requestCode);
}
}
}

//パーミッションを要求する(API 23 [Android 6.0])
private void requestPermission(String permission, int requestCode) {
if (android.os.Build.VERSION.SDK_INT >= 23) { //Android 6.0
requestPermissions(new String[]{ permission }, requestCode);
}
}

//パーミッション要求の結果コールバックハンドラ(API 23 [Android 6.0])
//https://developer.android.com/training/permissions/requesting#handle-response
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case REQUEST_WRITE_EXTERNAL_STORAGE: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "ユーザーによってストレージ読み書き権限が許可されました。", Toast.LENGTH_SHORT).show(); //this は Context
} else {
Toast.makeText(this, "ユーザーによってストレージ読み書き権限が拒否されました。", Toast.LENGTH_SHORT).show(); //this は Context
}
return;
}
}
}

●使用例(メインでのコードなど)
import android.util.Log;

//※アクティビティでの使用例
boolean isGranted = checkPermission(PERMISSION_WRITE_EXTERNAL_STORAGE); //現在のパーミッションをチェック
Log.d("DebugTag", PERMISSION_WRITE_EXTERNAL_STORAGE + "\nisGranted = " + isGranted);

if (!granted) {
//パーミッションが付与されてないとき、根拠の説明と要求をする(ダイアログを出す)
Log.d("DebugTag", PERMISSION_WRITE_EXTERNAL_STORAGE + ", requestCode = " + REQUEST_WRITE_EXTERNAL_STORAGE);
showPermissionRationaleAndRequest(PERMISSION_WRITE_EXTERNAL_STORAGE, REQUEST_WRITE_EXTERNAL_STORAGE); //API 23 (Android 6.0)
}


 注意して欲しいのはあくまでも、あらかじめ「AndroidManifest.xml」に書かれているパーミッションでしか要求はできないという点だ。その書き方は前述の「AndroidManifest.xml にパーミッションを書く例」を参考にして欲しい。

 根拠の説明ダイアログは「AlertDialog」を利用しているが、このままでは画面回転などで消えるので注意して欲しい。今回はテーマから外れるので必要あればデベロッパーマニュアルなどを参照して欲しい。またダイアログ内のメッセージも手抜きしているが(笑)、権限によって内容を変えるにはあらかじめメッセージを定義しておくことも必要だろう。リクエストコード(requestCode)は任意なので、その辺りで紐づけしても良いかも知れない。

 またこの実装では2つ以上同時に権限要求すると、ダイアログが重なってしまうという欠点もある。もしそういう必要があるなら、要求を Queue のようなもので管理すると良い(LinkedList 等でも可)。ちょっと難しいかも知れないが、挑戦してみるのも良いだろう。


(参考)
ダイアログを表示する
実行時のパーミッション リクエスト
パーミッションの確認
必要なパーミッションのリクエスト
パーミッション リクエストへの応答の処理


(関連記事)
【Android】【Java】AlertDialog を使ってみる
【Android】【Java】WIFI接続ONを取得する
【Android】【Java】WIFI, Bluetooth 接続の暗黙的Intent
【Android】【Java】SDカードからテキストファイルを読み込む
【Android】【Java】SDカードから画像ファイルを読み込む
【Android】【Java】SDカードに画像ファイルを保存する(png)
【Android】【Java】SDカードに画像ファイルを保存する(jpg)
【Android】【Java】SDカードのファイルを削除する


スポンサーサイト

category: Android

thread: プログラミング

janre: コンピュータ

tag: Androidライブラリ  Androidリファレンス  Java 
tb: 0   cm: --

【Android】【Java】アプリ名、バージョン番号(versionCode)、バージョン名(versionName) などをコードで取得する(PackageManager を利用)  


 前回 "app_name" など、リソースからIDを取得→アプリ名取得する方法などを書いたが、PackageManager からもアプリの情報などを取得することができる。ついでなので、バージョン番号(versionCode)バージョン名(versionName)ビルドターゲットSDKのバージョン(targetSdkVersion)最小SDKバージョン(minSdkVersion)なども書いておこう。これらの違いは簡単な解説も書いておくが、以下に資料を載せておくので必要なら確認して欲しい。

(参考)
Android での API レベルの使用
minSdkVersionとtargetSdkVersionの関係


(※) Android Studio 3.1.2 / Galaxy S7 Edge (Android 7.0) / Windows10(x64) で確認



■アプリケーション名を取得する

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

//アプリケーション名を取得する
public static final String getApplicationName(final Context context) {
try {
final PackageManager pm = context.getPackageManager();
final ApplicationInfo info = pm.getApplicationInfo(context.getPackageName(), 0);
return pm.getApplicationLabel(info).toString();
} catch (PackageManager.NameNotFoundException e) {
return ""; //取得失敗
}
}

●使用例(メインでのコードなど)
import android.util.Log;

//※アクティビティでの使用例
String applicationName = getApplicationName(this); //this は context
Log.d("DebugTag", "applicationName = " + applicationName);

applicationName = AppInfoTest

 アプリ名はローカライズされた文字列となる。ここでは自身のパッケージ名を使っているが、パッケージ名を引数に加えたオーバーロードでも作れば、他のアプリの名前も取得できる。

 またなぜかデベロッパーマニュアルには載ってないが、以下のようにしても取得できるようだ。
final PackageManager pm = context.getPackageManager();
final ApplicationInfo info = pm.getApplicationInfo(context.getPackageName(), 0);
return info.loadLabel(pm).toString(); //なぜかマニュアルにはない?




■バージョン番号(int 型)を取得する

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

//バージョン番号(int 型)を取得する
//・1 以上のときバージョン番号 / 0 = パッケージが存在しない
public static final int getVersionCode(final Context context) {
try {
final PackageManager pm = context.getPackageManager();
final PackageInfo info = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_META_DATA);
return info.versionCode;
} catch (PackageManager.NameNotFoundException e) {
return 0; //取得失敗
}
}

●使用例(メインでのコードなど)
import android.util.Log;

//※アクティビティでの使用例
int versionCode = getVersionCode(this); //this は context
Log.d("DebugTag", "versionCode = " + versionCode);

versionCode = 1

 バージョン番号とは常にインクリメントしていく、整数値の番号である。高いバージョンがインストしてある端末には低いバージョンをインストすることができない。その場合は高いバージョンをアンインストすれば、低いバージョンをインストすることができる。Google Play などに提出する際は低いバージョンをアップロードできないので注意しよう。

(参考)
Android での API レベルの使用



■バージョン名(String 型)を取得する

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

//バージョン名(String 型)を取得する
//・取得成功 = "1.0.0" など / 取得失敗 = ""
public static final String getVersionName(final Context context) {
try {
final PackageManager pm = context.getPackageManager();
final PackageInfo info = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_META_DATA);
return info.versionName;
} catch (PackageManager.NameNotFoundException e) {
return ""; //取得失敗
}
}

●使用例(メインでのコードなど)
import android.util.Log;

//※アクティビティでの使用例
String versionName = getVersionName(this); //this は context
Log.d("DebugTag", "versionName = " + versionName);

versionName = 1.0

 バージョン名とはユーザーに伝えるバージョンのことである。文字列なので "1.0.0" とか "2.0b" など自由に設定できる。番号を上下することはできるが、ユーザーに混乱をもたらすので普通はやらない方が良いだろう。

(参考)
Android での API レベルの使用



■ビルドターゲットSDKバージョン(API Level)を取得する

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

//ビルドターゲットとするSDKのバージョン(API Level)を取得する
//・1 以上のときバージョン番号 / 0 = 取得失敗
public static final int getTargetSdkVersion(final Context context) {
try {
final PackageManager pm = context.getPackageManager();
final ApplicationInfo info = pm.getApplicationInfo(context.getPackageName(), 0);
return info.targetSdkVersion;
} catch (PackageManager.NameNotFoundException e) {
return 0; //取得失敗
}
}

●使用例(メインでのコードなど)
import android.util.Log;

//※アクティビティでの使用例
int targetSdkVersion = getTargetSdkVersion(this); //this は context
Log.d("DebugTag", "targetSdkVersion = " + targetSdkVersion);

targetSdkVersion = 27

 ターゲットSDKのバージョンとはアプリをビルド(コンパイル)する際に利用するSDKのバージョン(API Level)のことである。利用するクラスやメソッドによっては、この条件(API Level)を満たしてないとコンパイルエラー(というより、エディタ上でエラーが出る)でビルドできない。

(参考)
minSdkVersionとtargetSdkVersionの関係



■最小SDKバージョン(API Level)を取得する

import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

//実行できる最小SDKバージョン(API Level)を取得する (API 24 以上)
//・1 以上のときバージョン番号 / 0 = 取得失敗 (API 24 より下は常に0)
public static final int getMinSdkVersion(final Context context) {
if (Build.VERSION.SDK_INT < 24)
return 0; //未対応

try {
final PackageManager pm = context.getPackageManager();
final ApplicationInfo info = pm.getApplicationInfo(context.getPackageName(), 0);
return info.minSdkVersion; //API 24
} catch (PackageManager.NameNotFoundException e) {
return 0; //取得失敗
}
}

●使用例(メインでのコードなど)
import android.util.Log;

//※アクティビティでの使用例
int minSdkVersion = getMinSdkVersion(this); //API 24 / this は context
Log.d("DebugTag", "minSdkVersion = " + minSdkVersion);

minSdkVersion = 24

 最小SDKバージョンとは利用できる端末の最小のSDKのバージョン(API Level)のことである。この例では 24 となっているが、これは Android 7.0 のことであり、それより下の端末(Android 6.0 とか 5.0 とか)は使えないという意味である。バージョン(API Level)を上げれば色々な機能を使えるようになるが、対応できる端末は少なくなるので注意が必要である。例えば ARCore などは「require Android 7.0 or later」となっているので、6.0以下などは利用できない。そういうアプリを作るときには重要になる。

 ただし、このメソッド自体(正確には ApplicationInfo.minSdkVersion 自体)が API Level 24 (Android 7.0) 以降でしか使えないので注意しよう(6.0以前は常に 0 になる)。

(参考)
minSdkVersionとtargetSdkVersionの関係


(関連記事)
【Android】【Java】テーマ(スタイル)等のリソースID(int値)を文字列から取得する
【Android】【Java】アプリ名 app_name タグをコードで取得する
【Android】【Java】画像リソースIDをコードで取得する
【Android】【Java】リソース名で、res/drawable-~ フォルダから、画像を読み込む(Bitmap)
【Android】【Java】リソース名で、res/drawable-~ フォルダから、画像を読み込む(Drawable)
【Android】【Java】res/raw リソースフォルダからテキストファイルを読み込む


category: Android

thread: プログラミング

janre: コンピュータ

tag: Androidライブラリ  Java 
tb: 0   cm: --

【Android】【Java】テーマ(スタイル)等のリソースID(int値)を文字列から取得する  


 Android Studio 内で完結するアプリなら必要ないかも知れないが、外部とのアプリ連携やプラグインのような別のシステムから、何らかのリソースを利用したいこともある。その場合、文字列からリソースID("android.R.~" や アプリ内の "R.~" の int値)を取得して適用することによって、Android 内のリソースを利用することができる。そのリソースID取得の方法を簡単にまとめておこう。なお今回は「テーマ(スタイル)の ID」と書いてはあるが、汎用的に使えそうなメソッドも提供しておくので、"mipmap" や "drawable", "string" なども応用すれば使える。その例もいくつか挙げておこう。


(※) Android Studio 3.1.2 / Galaxy S7 Edge (Android 7.0) / Windows10(x64) で確認



■テーマ(スタイル)の ID(int値)を文字列から取得する

 通常、Android Studio 内で開発している分には、スタイル(テーマ)は「android.R.style.Theme_DeviceDefault_Light_Dialog_Alert」(またはアプリ独自の場合「(パッケージ名).R.~」)のように、システムが用意した定数をハードコーディングしておけば事足りる。しかし動的に変更したり、何らかで ID(int値)が必要になった場合(Android のシステム関数の場合、リソースIDが引数になってるものも多い)、文字列から ID に変換できると便利だ。ちなみに私は Unity から Android のネイティブダイアログを使えるプラグインをリリースしているが、このダイアログにスタイル(テーマ)を適用するのにこの方法を用いている。基本的に Android システム以外からリソースID(int値)を利用することはわかりずらいので(アプリ固有の場合、ビルドでも変わるので)、動的に取得する方が適切だろう。なお、ID 取得に失敗したときは0になる(無い場合もエラーにはならない)。

●テーマ(スタイル)の ID(int)を取得する(関数定義)
import android.content.Context;

public static final int getStyleID(final Context context, final String name) {
if (name != null && name.length() > 0)
return context.getResources().getIdentifier(name, "style", context.getPackageName());
return 0; //取得失敗
}

●使用例(メインでのコードなど)
import android.util.Log;

//※アクティビティでの使用例
String holo_s = "android:Theme.Holo.Light.Dialog";
int holo_i = getStyleID(this, holo_s); //this は context
int holo_r = android.R.style.Theme_Holo_Light_Dialog;

String devDef_s = "android:Theme.DeviceDefault.Light.Dialog.Alert";
int devDef_i = getStyleID(this, devDef_s); //this は context
int devDef_r = android.R.style.Theme_DeviceDefault_Light_Dialog_Alert;

String mat_s = "android:Theme.Material.Light.Dialog.Alert";
int mat_i = getStyleID(this, mat_s); //this は context
int mat_r = android.R.style.Theme_Material_Light_Dialog_Alert;

Log.d("DebugTag", "holo_s = " + holo_s);
Log.d("DebugTag", "holo_i = " + holo_i);
Log.d("DebugTag", "holo_r = " + holo_r);
Log.d("DebugTag", "devDef_s = " + devDef_s);
Log.d("DebugTag", "devDef_i = " + devDef_i);
Log.d("DebugTag", "devDef_r = " + devDef_r);
Log.d("DebugTag", "mat_s = " + mat_s);
Log.d("DebugTag", "mat_i = " + mat_i);
Log.d("DebugTag", "mat_r = " + mat_r);

holo_s = android:Theme.Holo.Light.Dialog
holo_i = 16973939
holo_r = 16973939
devDef_s = android:Theme.DeviceDefault.Light.Dialog.Alert
devDef_i = 16974546
devDef_r = 16974546
mat_s = android:Theme.Material.Light.Dialog.Alert
mat_i = 16974394
mat_r = 16974394

 引数に与えてる文字列("_s" の付くもの)と Android システムの定数("_r" の付くもの)の名前を比較してみると、定数名:"android.R.style.Theme" → 文字列定数:"android:Theme" に置き換え、それ以降のアンダーバー("_")をドット(".")に置き換えれば相互変換できるとわかる。実際にはデベロッパーサイトの資料でもシステム固有値は掲載されているが、文字列から変換できると、ユーザー指定など色々便利である。特にアプリ固有の ID「(パッケージ名).R.~」の場合は、ビルドによって値が変わることもあるので、文字列から動的にIDを取得すれば、外部から利用したいときなども適切に処理できる。

(Android システムでの固有値)
Theme(テーマ[スタイル])



■リソースの種類を指定して ID(int値)を文字列から取得する

 内容的には「テーマ(スタイル)の ID(int値)取得」と同じなのだが、もう少し汎用的にリソースの種類を指定して ID(int値)を取得する関数を書いておこう。どちらかというとこっちが主役で「テーマ(スタイル)」などは種類別に書いておくと良いと思う。また文字列が空であるか否かを調べる関数も定義しておけば、かなりすっきりしたものになる。その例を挙げておこう。

●リソースの種類を指定して ID(int値)を取得する+空文字のチェック(関数定義)
import android.content.Context;

//リソースID(int値)を取得する
public static final int getResourceID(final Context context, final String type, final String name) {
if (!isNullOrEmpty(name) && !isNullOrEmpty(type))
return context.getResources().getIdentifier(name, type, context.getPackageName());
return 0; //取得失敗
}

//文字列が null または空のとき真を返す
public static final boolean isNullOrEmpty(final String str) {
return (str == null || str.length() == 0);
}

●使用例(メインでのコードなど)
import android.util.Log;

//※アクティビティでの使用例
int ic_lancher = R.mipmap.ic_launcher;
int ic_launcher_background = R.drawable.ic_launcher_background;

int app_name = R.string.app_name;
int mipmapID = getResourceID(this, "mipmap", "ic_launcher"); //this は context

int drawableID = getResourceID(this, "drawable", "ic_launcher_background"); //this は context
int stringID = getResourceID(this, "string", "app_name"); //this は context

Log.d("DebugTag", "ic_lancher = " + ic_lancher);
Log.d("DebugTag", "mipmapID = " + mipmapID);
Log.d("DebugTag", "ic_launcher_background = " + ic_launcher_background);
Log.d("DebugTag", "drawableID = " + drawableID);
Log.d("DebugTag", "app_name = " + app_name);
Log.d("DebugTag", "stringID = " + stringID);

ic_lancher = 2131361792
mipmapID = 2131361792
ic_launcher_background = 2131099732
drawableID = 2131099732
app_name = 2131427357
stringID = 2131427357

 ここでは例として "mipmap" や "drawable", "string" などを挙げているが、Android Studio を使っているなら、"R." を書いた後に出てくる入力補完に色々出てくるものが種類(ここでは引数の type)に相当すると考えて良いだろう。名前(name)は種類の "." 以降のものである。また Android システム自身が持っているリソースは "android:XXX~" と書けば良い(エディタ上で [Ctrl+B] を押せば参照できることがある[xml など])。


 以上の説明を踏まえて、前述した「テーマ(スタイル)の ID(int値)取得」や "mipmap", "drawable", "string" などを種類別に書いても良いだろう("string" の場合は "app_name" [アプリ名] などと組み合わせた関数を作ると楽かも知れない)。例えば以下のような関数を作っても良い。

●"mipmap", "drawable", "string" などのID(int値)を文字列から取得する
import android.content.Context;

//・・・(前述の関数定義は略)・・・

//テーマ(スタイル)のリソースIDを取得 [※種類別に書き換えた例]
public static final int getStyleID(final Context context, final String name) {
return getResourceID(context, "style", name);
}

//Mipmap画像("res/mipmap~")のリソースIDを取得(API 11)
public static final int getMipmapID(final Context context, final String name) {
return getResourceID(context, "mipmap", name); //API 11
}

//画像("res/drawable~")のリソースのIDを取得
public static final int getDrawableID(final Context context, final String name) {
return getResourceID(context, "drawable", name);
}

//文字列のリソースIDを取得
public static final int getStringID(final Context context, final String name) {
return getResourceID(context, "string", name);
}

//アプリ名のリソースIDを取得
public static final int getAppNameID(final Context context) {
return getResourceID(context, "string", "app_name"); //※デフォルトの場合
}

//アプリ名を取得
public static final String getAppName(final Context context) {
final int id = getAppNameID(context);
if (id != 0)
return context.getResources().getString(id);
return ""; //取得失敗。"app_name" 以外?(無いものもある)
}

 "string" 等の場合はIDから「String str = getResources().getString(stringID);」(アクティビティ上)のようにすれば文字列を取得することもできる。ただし、ID 取得に失敗したときは0になるので注意しよう(無い場合もエラーにはならない)。なお、デフォルトの場合 "app_name" にアプリ名が書かれたりするが(リソースの "res/values/string.xml")、アプリによっては書かれてないものもあるので気をつけて欲しい(そもそも xml を定義してないもの[サービスアプリとか]もある)。その場合は「PackageManager」からアプリ名を取得する方法もあるが、それはまた次の記事を見て欲しい。

 よく利用するものだけでも作っておけば便利なので、色々やってみると良いだろう。


(関連記事)
【Android】【Java】アプリ名、バージョン番号(versionCode)、バージョン名(versionName)などをコードで取得する(PackageManager を利用)
【Android】【Java】アプリ名 app_name タグをコードで取得する
【Android】【Java】画像リソースIDをコードで取得する
【Android】【Java】リソース名で、res/drawable-~ フォルダから、画像を読み込む(Bitmap)
【Android】【Java】リソース名で、res/drawable-~ フォルダから、画像を読み込む(Drawable)
【Android】【Java】res/raw リソースフォルダからテキストファイルを読み込む


category: Android

thread: プログラミング

janre: コンピュータ

tag: Androidライブラリ  Java 
tb: 0   cm: --

【Android】Locale 表記一覧  


 Android 実機で利用できるロケール(言語)を列挙したもの。テキスト読み上げ音声認識で言語を指定したいときにも利用できる。
 IETF言語タグ(BCP 47)での書き方は "ja-JP"(ハイフン)となっているが、実際に試してみると "ja_JP"(アンダーバー)でも可能のようだ。

 以下は実機で「利用可能な Locale」を列挙したものだ。コードは以下のサイトを参考に、テキストファイルに保存したものを表にしてみた。
 基本的に書式は "language" または "languge_country" と更に細かい情報で出力されたが、言語指定の引数として利用する分には "language" のみでも大丈夫のようだ。

(参考)
Java アプリケーションの国際化 (i18n) と Locale クラス(システムで利用可能な Locale を列挙する)


 Android Lists the locales (languages) that can be used on device. It can also be used when you want to specify a language by Text-to-speech or Speech Recognizer.
 The way of writing in the IETF language tag (BCP 47) is "en-US" (hyphen), but actually it seems possible to "en_US" (under bar).

 The following list enumerates "Available Locale" in device. The code consulted the following site, the result was saved in a text file.
 Basically, the format was output as "language" or "language_country" with more detailed information, but it seems to be OK even if only "language" is used as argument for language specification.

(See more)
Internationalization of Java applications (i18n) and Locale class (enumerating the Locale available in the system)


(※) Android Studio 2.3.3 / Galaxy S7 Edge (Android 7.0) で確認

総数:698
ロケール文字列
Locale
英語表記
English
日本語表記
Japanese
afAfrikaansアフリカーンス語
agqAghemアゲム語
akAkanアカン語
amAmharicアムハラ語
arArabicアラビア語
asAssameseアッサム語
asaAsuアス語
azAzerbaijaniアゼルバイジャン語
basBasaaバサ語
beBelarusianベラルーシ語
bemBembaベンバ語
bezBenaベナ語
bgBulgarianブルガリア語
bmBambaraバンバラ語
bnBengaliベンガル語
boTibetanチベット語
brBretonブルトン語
brxBodoボド語
bsBosnianボスニア語
caCatalanカタロニア語
ceChechenチェチェン語
cggChigaチガ語
chrCherokeeチェロキー語
csCzechチェコ語
cyWelshウェールズ語
daDanishデンマーク語
davTaitaタイタ語
deGermanドイツ語
djeZarmaザルマ語
dsbLower Sorbian低ソルビア語
duaDualaドゥアラ語
dyoJola-Fonyiジョラ=フォニィ語
dzDzongkhaゾンカ語
ebuEmbuエンブ語
eeEweエウェ語
elGreekギリシャ語
enEnglish英語
eoEsperantoエスペラント語
esSpanishスペイン語
etEstonianエストニア語
euBasqueバスク語
ewoEwondoエウォンド語
faPersianペルシア語
ffFulahフラニ語
fiFinnishフィンランド語
filFilipinoフィリピノ語
foFaroeseフェロー語
frFrenchフランス語
furFriulianフリウリ語
fyWestern Frisian西フリジア語
gaIrishアイルランド語
gdScottish Gaelicスコットランド・ゲール語
glGalicianガリシア語
gswSwiss Germanスイスドイツ語
guGujaratiグジャラート語
guzGusiiグシイ語
gvManxマン島語
haHausaハウサ語
hawHawaiianハワイ語
hiHindiヒンディー語
hrCroatianクロアチア語
hsbUpper Sorbian上ソルビア語
huHungarianハンガリー語
hyArmenianアルメニア語
igIgboイボ語
iiSichuan Yi四川イ語
inIndonesianインドネシア語
isIcelandicアイスランド語
itItalianイタリア語
iwHebrewヘブライ語
jaJapanese日本語
jgoNgombaンゴンバ語
jiYiddishイディッシュ語
jmcMachameマチャメ語
kaGeorgianジョージア語
kabKabyleカビル語
kamKambaカンバ語
kdeMakondeマコンデ語
keaKabuverdianuカーボベルデ・クレオール語
khqKoyra Chiiniコイラ・チーニ語
kiKikuyuキクユ語
kkKazakhカザフ語
kkjKakoカコ語
klKalaallisutグリーンランド語
klnKalenjinカレンジン語
kmKhmerクメール語
knKannadaカンナダ語
koKorean韓国語
kokKonkaniコンカニ語
ksKashmiriカシミール語
ksbShambalaサンバー語
ksfBafiaバフィア語
kshColognianケルン語
kwCornishコーンウォール語
kyKyrgyzキルギス語
lagLangiランギ語
lbLuxembourgishルクセンブルク語
lgGandaガンダ語
lktLakotaラコタ語
lnLingalaリンガラ語
loLaoラオ語
lrcNorthern Luri北ロル語
ltLithuanianリトアニア語
luLuba-Katangaルバ・カタンガ語
luoLuoルオ語
luyLuyiaルヒヤ語
lvLatvianラトビア語
masMasaiマサイ語
merMeruメル語
mfeMorisyenモーリシャス・クレオール語
mgMalagasyマダガスカル語
mghMakhuwa-Meettoマクア・ミート語
mgoMetaʼメタ語
mkMacedonianマケドニア語
mlMalayalamマラヤーラム語
mnMongolianモンゴル語
mrMarathiマラーティー語
msMalayマレー語
mtMalteseマルタ語
muaMundangムンダン語
myBurmeseビルマ語
mznMazanderaniマーザンダラーン語
naqNamaナマ語
nbNorwegian Bokmålノルウェー語(ブークモール)
ndNorth Ndebele北ンデベレ語
neNepaliネパール語
nlDutchオランダ語
nmgKwasioクワシオ語
nnNorwegian Nynorskノルウェー語(ニーノシュク)
nnhNgiemboonンジエムブーン語
nusNuerヌエル語
nynNyankoleニャンコレ語
omOromoオロモ語
orOdiaオリヤー語
osOsseticオセット語
paPunjabiパンジャブ語
plPolishポーランド語
psPashtoパシュトゥー語
ptPortugueseポルトガル語
quQuechuaケチュア語
rmRomanshロマンシュ語
rnRundiルンディ語
roRomanianルーマニア語
rofRomboロンボ語
ruRussianロシア語
rwKinyarwandaルワンダ語
rwkRwaルワ語
sahSakhaヤクート語
saqSamburuサンブル語
sbpSanguサング語
seNorthern Sami北サーミ語
sehSenaセナ語
sesKoyraboro Senniコイラボロ・センニ語
sgSangoサンゴ語
shiTachelhitタシルハイト語
siSinhalaシンハラ語
skSlovakスロバキア語
slSlovenianスロベニア語
smnInari Samiイナリ・サーミ語
snShonaショナ語
soSomaliソマリ語
sqAlbanianアルバニア語
srSerbianセルビア語
svSwedishスウェーデン語
swSwahiliスワヒリ語
taTamilタミル語
teTeluguテルグ語
teoTesoテソ語
tgTajikタジク語
thThaiタイ語
tiTigrinyaティグリニア語
tkTurkmenトルクメン語
toTonganトンガ語
trTurkishトルコ語
twqTasawaqタサワク語
tzmCentral Atlas Tamazight中央アトラス・タマジクト語
ugUyghurウイグル語
ukUkrainianウクライナ語
urUrduウルドゥー語
uzUzbekウズベク語
vaiVaiヴァイ語
viVietnameseベトナム語
vunVunjoヴンジョ語
waeWalserヴァリス語
xogSogaソガ語
yavYangbenヤンベン語
yoYorubaヨルバ語
zghStandard Moroccan Tamazightタマージク語(モロッコ公用語)
zhChinese中国語
zuZuluズールー語
af_NAAfrikaans (Namibia)アフリカーンス語 (ナミビア)
af_ZAAfrikaans (South Africa)アフリカーンス語 (南アフリカ)
agq_CMAghem (Cameroon)アゲム語 (カメルーン)
ak_GHAkan (Ghana)アカン語 (ガーナ)
am_ETAmharic (Ethiopia)アムハラ語 (エチオピア)
ar_001Arabic (World)アラビア語 (世界)
ar_AEArabic (United Arab Emirates)アラビア語 (アラブ首長国連邦)
ar_BHArabic (Bahrain)アラビア語 (バーレーン)
ar_DJArabic (Djibouti)アラビア語 (ジブチ)
ar_DZArabic (Algeria)アラビア語 (アルジェリア)
ar_EGArabic (Egypt)アラビア語 (エジプト)
ar_EHArabic (Western Sahara)アラビア語 (西サハラ)
ar_ERArabic (Eritrea)アラビア語 (エリトリア)
ar_ILArabic (Israel)アラビア語 (イスラエル)
ar_IQArabic (Iraq)アラビア語 (イラク)
ar_JOArabic (Jordan)アラビア語 (ヨルダン)
ar_KMArabic (Comoros)アラビア語 (コモロ)
ar_KWArabic (Kuwait)アラビア語 (クウェート)
ar_LBArabic (Lebanon)アラビア語 (レバノン)
ar_LYArabic (Libya)アラビア語 (リビア)
ar_MAArabic (Morocco)アラビア語 (モロッコ)
ar_MRArabic (Mauritania)アラビア語 (モーリタニア)
ar_OMArabic (Oman)アラビア語 (オマーン)
ar_PSArabic (Palestine)アラビア語 (パレスチナ)
ar_QAArabic (Qatar)アラビア語 (カタール)
ar_SAArabic (Saudi Arabia)アラビア語 (サウジアラビア)
ar_SDArabic (Sudan)アラビア語 (スーダン)
ar_SOArabic (Somalia)アラビア語 (ソマリア)
ar_SSArabic (South Sudan)アラビア語 (南スーダン)
ar_SYArabic (Syria)アラビア語 (シリア)
ar_TDArabic (Chad)アラビア語 (チャド)
ar_TNArabic (Tunisia)アラビア語 (チュニジア)
ar_YEArabic (Yemen)アラビア語 (イエメン)
as_INAssamese (India)アッサム語 (インド)
asa_TZAsu (Tanzania)アス語 (タンザニア)
az_AZ_#CyrlAzerbaijani (Cyrillic,Azerbaijan)アゼルバイジャン語 (キリル文字,アゼルバイジャン)
az_AZ_#LatnAzerbaijani (Latin,Azerbaijan)アゼルバイジャン語 (ラテン文字,アゼルバイジャン)
az__#CyrlAzerbaijani (Cyrillic)アゼルバイジャン語 (キリル文字)
az__#LatnAzerbaijani (Latin)アゼルバイジャン語 (ラテン文字)
bas_CMBasaa (Cameroon)バサ語 (カメルーン)
be_BYBelarusian (Belarus)ベラルーシ語 (ベラルーシ)
bem_ZMBemba (Zambia)ベンバ語 (ザンビア)
bez_TZBena (Tanzania)ベナ語 (タンザニア)
bg_BGBulgarian (Bulgaria)ブルガリア語 (ブルガリア)
bm_MLBambara (Mali)バンバラ語 (マリ)
bn_BDBengali (Bangladesh)ベンガル語 (バングラデシュ)
bn_INBengali (India)ベンガル語 (インド)
bo_CNTibetan (China)チベット語 (中国)
bo_INTibetan (India)チベット語 (インド)
br_FRBreton (France)ブルトン語 (フランス)
brx_INBodo (India)ボド語 (インド)
bs_BA_#CyrlBosnian (Cyrillic,Bosnia & Herzegovina)ボスニア語 (キリル文字,ボスニア・ヘルツェゴビナ)
bs_BA_#LatnBosnian (Latin,Bosnia & Herzegovina)ボスニア語 (ラテン文字,ボスニア・ヘルツェゴビナ)
bs__#CyrlBosnian (Cyrillic)ボスニア語 (キリル文字)
bs__#LatnBosnian (Latin)ボスニア語 (ラテン文字)
ca_ADCatalan (Andorra)カタロニア語 (アンドラ)
ca_ESCatalan (Spain)カタロニア語 (スペイン)
ca_FRCatalan (France)カタロニア語 (フランス)
ca_ITCatalan (Italy)カタロニア語 (イタリア)
ce_RUChechen (Russia)チェチェン語 (ロシア)
cgg_UGChiga (Uganda)チガ語 (ウガンダ)
chr_USCherokee (United States)チェロキー語 (アメリカ合衆国)
cs_CZCzech (Czech Republic)チェコ語 (チェコ共和国)
cy_GBWelsh (United Kingdom)ウェールズ語 (イギリス)
da_DKDanish (Denmark)デンマーク語 (デンマーク)
da_GLDanish (Greenland)デンマーク語 (グリーンランド)
dav_KETaita (Kenya)タイタ語 (ケニア)
de_ATGerman (Austria)ドイツ語 (オーストリア)
de_BEGerman (Belgium)ドイツ語 (ベルギー)
de_CHGerman (Switzerland)ドイツ語 (スイス)
de_DEGerman (Germany)ドイツ語 (ドイツ)
de_LIGerman (Liechtenstein)ドイツ語 (リヒテンシュタイン)
de_LUGerman (Luxembourg)ドイツ語 (ルクセンブルグ)
dje_NEZarma (Niger)ザルマ語 (ニジェール)
dsb_DELower Sorbian (Germany)低ソルビア語 (ドイツ)
dua_CMDuala (Cameroon)ドゥアラ語 (カメルーン)
dyo_SNJola-Fonyi (Senegal)ジョラ=フォニィ語 (セネガル)
dz_BTDzongkha (Bhutan)ゾンカ語 (ブータン)
ebu_KEEmbu (Kenya)エンブ語 (ケニア)
ee_GHEwe (Ghana)エウェ語 (ガーナ)
ee_TGEwe (Togo)エウェ語 (トーゴ)
el_CYGreek (Cyprus)ギリシャ語 (キプロス)
el_GRGreek (Greece)ギリシャ語 (ギリシャ)
en_001English (World)英語 (世界)
en_150English (Europe)英語 (ヨーロッパ)
en_AGEnglish (Antigua & Barbuda)英語 (アンティグア・バーブーダ)
en_AIEnglish (Anguilla)英語 (アンギラ)
en_ASEnglish (American Samoa)英語 (米領サモア)
en_ATEnglish (Austria)英語 (オーストリア)
en_AUEnglish (Australia)英語 (オーストラリア)
en_BBEnglish (Barbados)英語 (バルバドス)
en_BEEnglish (Belgium)英語 (ベルギー)
en_BIEnglish (Burundi)英語 (ブルンジ)
en_BMEnglish (Bermuda)英語 (バミューダ)
en_BSEnglish (Bahamas)英語 (バハマ)
en_BWEnglish (Botswana)英語 (ボツワナ)
en_BZEnglish (Belize)英語 (ベリーズ)
en_CAEnglish (Canada)英語 (カナダ)
en_CCEnglish (Cocos (Keeling) Islands)英語 (ココス(キーリング)諸島)
en_CHEnglish (Switzerland)英語 (スイス)
en_CKEnglish (Cook Islands)英語 (クック諸島)
en_CMEnglish (Cameroon)英語 (カメルーン)
en_CXEnglish (Christmas Island)英語 (クリスマス島)
en_CYEnglish (Cyprus)英語 (キプロス)
en_DEEnglish (Germany)英語 (ドイツ)
en_DGEnglish (Diego Garcia)英語 (ディエゴガルシア島)
en_DKEnglish (Denmark)英語 (デンマーク)
en_DMEnglish (Dominica)英語 (ドミニカ国)
en_EREnglish (Eritrea)英語 (エリトリア)
en_FIEnglish (Finland)英語 (フィンランド)
en_FJEnglish (Fiji)英語 (フィジー)
en_FKEnglish (Falkland Islands (Islas Malvinas))英語 (フォークランド諸島)
en_FMEnglish (Micronesia)英語 (ミクロネシア連邦)
en_GBEnglish (United Kingdom)英語 (イギリス)
en_GDEnglish (Grenada)英語 (グレナダ)
en_GGEnglish (Guernsey)英語 (ガーンジー)
en_GHEnglish (Ghana)英語 (ガーナ)
en_GIEnglish (Gibraltar)英語 (ジブラルタル)
en_GMEnglish (Gambia)英語 (ガンビア)
en_GUEnglish (Guam)英語 (グアム)
en_GYEnglish (Guyana)英語 (ガイアナ)
en_HKEnglish (Hong Kong)英語 (香港)
en_IEEnglish (Ireland)英語 (アイルランド)
en_ILEnglish (Israel)英語 (イスラエル)
en_IMEnglish (Isle of Man)英語 (マン島)
en_INEnglish (India)英語 (インド)
en_IOEnglish (British Indian Ocean Territory)英語 (英領インド洋地域)
en_JEEnglish (Jersey)英語 (ジャージー)
en_JMEnglish (Jamaica)英語 (ジャマイカ)
en_KEEnglish (Kenya)英語 (ケニア)
en_KIEnglish (Kiribati)英語 (キリバス)
en_KNEnglish (St. Kitts & Nevis)英語 (セントクリストファー・ネイビス)
en_KYEnglish (Cayman Islands)英語 (ケイマン諸島)
en_LCEnglish (St. Lucia)英語 (セントルシア)
en_LREnglish (Liberia)英語 (リベリア)
en_LSEnglish (Lesotho)英語 (レソト)
en_MGEnglish (Madagascar)英語 (マダガスカル)
en_MHEnglish (Marshall Islands)英語 (マーシャル諸島)
en_MOEnglish (Macau)英語 (マカオ)
en_MPEnglish (Northern Mariana Islands)英語 (北マリアナ諸島)
en_MSEnglish (Montserrat)英語 (モントセラト)
en_MTEnglish (Malta)英語 (マルタ)
en_MUEnglish (Mauritius)英語 (モーリシャス)
en_MWEnglish (Malawi)英語 (マラウイ)
en_MYEnglish (Malaysia)英語 (マレーシア)
en_NAEnglish (Namibia)英語 (ナミビア)
en_NFEnglish (Norfolk Island)英語 (ノーフォーク島)
en_NGEnglish (Nigeria)英語 (ナイジェリア)
en_NLEnglish (Netherlands)英語 (オランダ)
en_NREnglish (Nauru)英語 (ナウル)
en_NUEnglish (Niue)英語 (ニウエ島)
en_NZEnglish (New Zealand)英語 (ニュージーランド)
en_PGEnglish (Papua New Guinea)英語 (パプアニューギニア)
en_PHEnglish (Philippines)英語 (フィリピン)
en_PKEnglish (Pakistan)英語 (パキスタン)
en_PNEnglish (Pitcairn Islands)英語 (ピトケアン諸島)
en_PREnglish (Puerto Rico)英語 (プエルトリコ)
en_PWEnglish (Palau)英語 (パラオ)
en_RWEnglish (Rwanda)英語 (ルワンダ)
en_SBEnglish (Solomon Islands)英語 (ソロモン諸島)
en_SCEnglish (Seychelles)英語 (セーシェル)
en_SDEnglish (Sudan)英語 (スーダン)
en_SEEnglish (Sweden)英語 (スウェーデン)
en_SGEnglish (Singapore)英語 (シンガポール)
en_SHEnglish (St. Helena)英語 (セントヘレナ)
en_SIEnglish (Slovenia)英語 (スロベニア)
en_SLEnglish (Sierra Leone)英語 (シエラレオネ)
en_SSEnglish (South Sudan)英語 (南スーダン)
en_SXEnglish (Sint Maarten)英語 (シント・マールテン)
en_SZEnglish (Swaziland)英語 (スワジランド)
en_TCEnglish (Turks & Caicos Islands)英語 (タークス・カイコス諸島)
en_TKEnglish (Tokelau)英語 (トケラウ)
en_TOEnglish (Tonga)英語 (トンガ)
en_TTEnglish (Trinidad & Tobago)英語 (トリニダード・トバゴ)
en_TVEnglish (Tuvalu)英語 (ツバル)
en_TZEnglish (Tanzania)英語 (タンザニア)
en_UGEnglish (Uganda)英語 (ウガンダ)
en_UMEnglish (U.S. Outlying Islands)英語 (米領太平洋諸島)
en_USEnglish (United States)英語 (アメリカ合衆国)
en_US_POSIXEnglish (United States,Computer)英語 (アメリカ合衆国,コンピュータ)
en_VCEnglish (St. Vincent & Grenadines)英語 (セントビンセント・グレナディーン諸島)
en_VGEnglish (British Virgin Islands)英語 (英領ヴァージン諸島)
en_VIEnglish (U.S. Virgin Islands)英語 (米領ヴァージン諸島)
en_VUEnglish (Vanuatu)英語 (バヌアツ)
en_WSEnglish (Samoa)英語 (サモア)
en_ZAEnglish (South Africa)英語 (南アフリカ)
en_ZGEnglish (Zawgyi)英語 (ZG)
en_ZMEnglish (Zambia)英語 (ザンビア)
en_ZWEnglish (Zimbabwe)英語 (ジンバブエ)
es_419Spanish (Latin America)スペイン語 (ラテンアメリカ)
es_ARSpanish (Argentina)スペイン語 (アルゼンチン)
es_BOSpanish (Bolivia)スペイン語 (ボリビア)
es_CLSpanish (Chile)スペイン語 (チリ)
es_COSpanish (Colombia)スペイン語 (コロンビア)
es_CRSpanish (Costa Rica)スペイン語 (コスタリカ)
es_CUSpanish (Cuba)スペイン語 (キューバ)
es_DOSpanish (Dominican Republic)スペイン語 (ドミニカ共和国)
es_EASpanish (Ceuta & Melilla)スペイン語 (セウタ・メリリャ)
es_ECSpanish (Ecuador)スペイン語 (エクアドル)
es_ESSpanish (Spain)スペイン語 (スペイン)
es_GQSpanish (Equatorial Guinea)スペイン語 (赤道ギニア)
es_GTSpanish (Guatemala)スペイン語 (グアテマラ)
es_HNSpanish (Honduras)スペイン語 (ホンジュラス)
es_ICSpanish (Canary Islands)スペイン語 (カナリア諸島)
es_MXSpanish (Mexico)スペイン語 (メキシコ)
es_NISpanish (Nicaragua)スペイン語 (ニカラグア)
es_PASpanish (Panama)スペイン語 (パナマ)
es_PESpanish (Peru)スペイン語 (ペルー)
es_PHSpanish (Philippines)スペイン語 (フィリピン)
es_PRSpanish (Puerto Rico)スペイン語 (プエルトリコ)
es_PYSpanish (Paraguay)スペイン語 (パラグアイ)
es_SVSpanish (El Salvador)スペイン語 (エルサルバドル)
es_USSpanish (United States)スペイン語 (アメリカ合衆国)
es_UYSpanish (Uruguay)スペイン語 (ウルグアイ)
es_VESpanish (Venezuela)スペイン語 (ベネズエラ)
et_EEEstonian (Estonia)エストニア語 (エストニア)
eu_ESBasque (Spain)バスク語 (スペイン)
ewo_CMEwondo (Cameroon)エウォンド語 (カメルーン)
fa_AFPersian (Afghanistan)ペルシア語 (アフガニスタン)
fa_IRPersian (Iran)ペルシア語 (イラン)
ff_CMFulah (Cameroon)フラニ語 (カメルーン)
ff_GNFulah (Guinea)フラニ語 (ギニア)
ff_MRFulah (Mauritania)フラニ語 (モーリタニア)
ff_SNFulah (Senegal)フラニ語 (セネガル)
fi_FIFinnish (Finland)フィンランド語 (フィンランド)
fil_PHFilipino (Philippines)フィリピノ語 (フィリピン)
fo_DKFaroese (Denmark)フェロー語 (デンマーク)
fo_FOFaroese (Faroe Islands)フェロー語 (フェロー諸島)
fr_BEFrench (Belgium)フランス語 (ベルギー)
fr_BFFrench (Burkina Faso)フランス語 (ブルキナファソ)
fr_BIFrench (Burundi)フランス語 (ブルンジ)
fr_BJFrench (Benin)フランス語 (ベナン)
fr_BLFrench (St. Barthélemy)フランス語 (サン・バルテルミー島)
fr_CAFrench (Canada)フランス語 (カナダ)
fr_CDFrench (Congo (DRC))フランス語 (コンゴ民主共和国(キンシャサ))
fr_CFFrench (Central African Republic)フランス語 (中央アフリカ共和国)
fr_CGFrench (Congo (Republic))フランス語 (コンゴ共和国(ブラザビル))
fr_CHFrench (Switzerland)フランス語 (スイス)
fr_CIFrench (Côte d’Ivoire)フランス語 (コートジボワール)
fr_CMFrench (Cameroon)フランス語 (カメルーン)
fr_DJFrench (Djibouti)フランス語 (ジブチ)
fr_DZFrench (Algeria)フランス語 (アルジェリア)
fr_FRFrench (France)フランス語 (フランス)
fr_GAFrench (Gabon)フランス語 (ガボン)
fr_GFFrench (French Guiana)フランス語 (仏領ギアナ)
fr_GNFrench (Guinea)フランス語 (ギニア)
fr_GPFrench (Guadeloupe)フランス語 (グアドループ)
fr_GQFrench (Equatorial Guinea)フランス語 (赤道ギニア)
fr_HTFrench (Haiti)フランス語 (ハイチ)
fr_KMFrench (Comoros)フランス語 (コモロ)
fr_LUFrench (Luxembourg)フランス語 (ルクセンブルグ)
fr_MAFrench (Morocco)フランス語 (モロッコ)
fr_MCFrench (Monaco)フランス語 (モナコ)
fr_MFFrench (St. Martin)フランス語 (サン・マルタン)
fr_MGFrench (Madagascar)フランス語 (マダガスカル)
fr_MLFrench (Mali)フランス語 (マリ)
fr_MQFrench (Martinique)フランス語 (マルティニーク)
fr_MRFrench (Mauritania)フランス語 (モーリタニア)
fr_MUFrench (Mauritius)フランス語 (モーリシャス)
fr_NCFrench (New Caledonia)フランス語 (ニューカレドニア)
fr_NEFrench (Niger)フランス語 (ニジェール)
fr_PFFrench (French Polynesia)フランス語 (仏領ポリネシア)
fr_PMFrench (St. Pierre & Miquelon)フランス語 (サンピエール島・ミクロン島)
fr_REFrench (Réunion)フランス語 (レユニオン島)
fr_RWFrench (Rwanda)フランス語 (ルワンダ)
fr_SCFrench (Seychelles)フランス語 (セーシェル)
fr_SNFrench (Senegal)フランス語 (セネガル)
fr_SYFrench (Syria)フランス語 (シリア)
fr_TDFrench (Chad)フランス語 (チャド)
fr_TGFrench (Togo)フランス語 (トーゴ)
fr_TNFrench (Tunisia)フランス語 (チュニジア)
fr_VUFrench (Vanuatu)フランス語 (バヌアツ)
fr_WFFrench (Wallis & Futuna)フランス語 (ウォリス・フツナ)
fr_YTFrench (Mayotte)フランス語 (マヨット島)
fur_ITFriulian (Italy)フリウリ語 (イタリア)
fy_NLWestern Frisian (Netherlands)西フリジア語 (オランダ)
ga_IEIrish (Ireland)アイルランド語 (アイルランド)
gd_GBScottish Gaelic (United Kingdom)スコットランド・ゲール語 (イギリス)
gl_ESGalician (Spain)ガリシア語 (スペイン)
gsw_CHSwiss German (Switzerland)スイスドイツ語 (スイス)
gsw_FRSwiss German (France)スイスドイツ語 (フランス)
gsw_LISwiss German (Liechtenstein)スイスドイツ語 (リヒテンシュタイン)
gu_INGujarati (India)グジャラート語 (インド)
guz_KEGusii (Kenya)グシイ語 (ケニア)
gv_IMManx (Isle of Man)マン島語 (マン島)
ha_GHHausa (Ghana)ハウサ語 (ガーナ)
ha_NEHausa (Niger)ハウサ語 (ニジェール)
ha_NGHausa (Nigeria)ハウサ語 (ナイジェリア)
haw_USHawaiian (United States)ハワイ語 (アメリカ合衆国)
hi_INHindi (India)ヒンディー語 (インド)
hr_BACroatian (Bosnia & Herzegovina)クロアチア語 (ボスニア・ヘルツェゴビナ)
hr_HRCroatian (Croatia)クロアチア語 (クロアチア)
hsb_DEUpper Sorbian (Germany)上ソルビア語 (ドイツ)
hu_HUHungarian (Hungary)ハンガリー語 (ハンガリー)
hy_AMArmenian (Armenia)アルメニア語 (アルメニア)
ig_NGIgbo (Nigeria)イボ語 (ナイジェリア)
ii_CNSichuan Yi (China)四川イ語 (中国)
in_IDIndonesian (Indonesia)インドネシア語 (インドネシア)
is_ISIcelandic (Iceland)アイスランド語 (アイスランド)
it_CHItalian (Switzerland)イタリア語 (スイス)
it_ITItalian (Italy)イタリア語 (イタリア)
it_SMItalian (San Marino)イタリア語 (サンマリノ)
iw_ILHebrew (Israel)ヘブライ語 (イスラエル)
ja_JPJapanese (Japan)日本語 (日本)
jgo_CMNgomba (Cameroon)ンゴンバ語 (カメルーン)
ji_001Yiddish (World)イディッシュ語 (世界)
jmc_TZMachame (Tanzania)マチャメ語 (タンザニア)
ka_GEGeorgian (Georgia)ジョージア語 (ジョージア)
kab_DZKabyle (Algeria)カビル語 (アルジェリア)
kam_KEKamba (Kenya)カンバ語 (ケニア)
kde_TZMakonde (Tanzania)マコンデ語 (タンザニア)
kea_CVKabuverdianu (Cape Verde)カーボベルデ・クレオール語 (カーボベルデ)
khq_MLKoyra Chiini (Mali)コイラ・チーニ語 (マリ)
ki_KEKikuyu (Kenya)キクユ語 (ケニア)
kk_KZKazakh (Kazakhstan)カザフ語 (カザフスタン)
kkj_CMKako (Cameroon)カコ語 (カメルーン)
kl_GLKalaallisut (Greenland)グリーンランド語 (グリーンランド)
kln_KEKalenjin (Kenya)カレンジン語 (ケニア)
km_KHKhmer (Cambodia)クメール語 (カンボジア)
kn_INKannada (India)カンナダ語 (インド)
ko_KPKorean (North Korea)韓国語 (朝鮮民主主義人民共和国)
ko_KRKorean (South Korea)韓国語 (大韓民国)
kok_INKonkani (India)コンカニ語 (インド)
ks_INKashmiri (India)カシミール語 (インド)
ksb_TZShambala (Tanzania)サンバー語 (タンザニア)
ksf_CMBafia (Cameroon)バフィア語 (カメルーン)
ksh_DEColognian (Germany)ケルン語 (ドイツ)
kw_GBCornish (United Kingdom)コーンウォール語 (イギリス)
ky_KGKyrgyz (Kyrgyzstan)キルギス語 (キルギス)
lag_TZLangi (Tanzania)ランギ語 (タンザニア)
lb_LULuxembourgish (Luxembourg)ルクセンブルク語 (ルクセンブルグ)
lg_UGGanda (Uganda)ガンダ語 (ウガンダ)
lkt_USLakota (United States)ラコタ語 (アメリカ合衆国)
ln_AOLingala (Angola)リンガラ語 (アンゴラ)
ln_CDLingala (Congo (DRC))リンガラ語 (コンゴ民主共和国(キンシャサ))
ln_CFLingala (Central African Republic)リンガラ語 (中央アフリカ共和国)
ln_CGLingala (Congo (Republic))リンガラ語 (コンゴ共和国(ブラザビル))
lo_LALao (Laos)ラオ語 (ラオス)
lrc_IQNorthern Luri (Iraq)北ロル語 (イラク)
lrc_IRNorthern Luri (Iran)北ロル語 (イラン)
lt_LTLithuanian (Lithuania)リトアニア語 (リトアニア)
lu_CDLuba-Katanga (Congo (DRC))ルバ・カタンガ語 (コンゴ民主共和国(キンシャサ))
luo_KELuo (Kenya)ルオ語 (ケニア)
luy_KELuyia (Kenya)ルヒヤ語 (ケニア)
lv_LVLatvian (Latvia)ラトビア語 (ラトビア)
mas_KEMasai (Kenya)マサイ語 (ケニア)
mas_TZMasai (Tanzania)マサイ語 (タンザニア)
mer_KEMeru (Kenya)メル語 (ケニア)
mfe_MUMorisyen (Mauritius)モーリシャス・クレオール語 (モーリシャス)
mg_MGMalagasy (Madagascar)マダガスカル語 (マダガスカル)
mgh_MZMakhuwa-Meetto (Mozambique)マクア・ミート語 (モザンビーク)
mgo_CMMetaʼ (Cameroon)メタ語 (カメルーン)
mk_MKMacedonian (Macedonia (FYROM))マケドニア語 (マケドニア)
ml_INMalayalam (India)マラヤーラム語 (インド)
mn_MNMongolian (Mongolia)モンゴル語 (モンゴル)
mr_INMarathi (India)マラーティー語 (インド)
ms_BNMalay (Brunei)マレー語 (ブルネイ)
ms_MYMalay (Malaysia)マレー語 (マレーシア)
ms_SGMalay (Singapore)マレー語 (シンガポール)
mt_MTMaltese (Malta)マルタ語 (マルタ)
mua_CMMundang (Cameroon)ムンダン語 (カメルーン)
my_MMBurmese (Myanmar (Burma))ビルマ語 (ミャンマー)
my_ZGBurmese (Zawgyi)ビルマ語 (ZG)
mzn_IRMazanderani (Iran)マーザンダラーン語 (イラン)
naq_NANama (Namibia)ナマ語 (ナミビア)
nb_NONorwegian Bokmål (Norway)ノルウェー語(ブークモール) (ノルウェー)
nb_SJNorwegian Bokmål (Svalbard & Jan Mayen)ノルウェー語(ブークモール) (スバールバル諸島・ヤンマイエン島)
nd_ZWNorth Ndebele (Zimbabwe)北ンデベレ語 (ジンバブエ)
ne_INNepali (India)ネパール語 (インド)
ne_NPNepali (Nepal)ネパール語 (ネパール)
nl_AWDutch (Aruba)オランダ語 (アルバ)
nl_BEDutch (Belgium)オランダ語 (ベルギー)
nl_BQDutch (Caribbean Netherlands)オランダ語 (オランダ領カリブ)
nl_CWDutch (Curaçao)オランダ語 (キュラソー)
nl_NLDutch (Netherlands)オランダ語 (オランダ)
nl_SRDutch (Suriname)オランダ語 (スリナム)
nl_SXDutch (Sint Maarten)オランダ語 (シント・マールテン)
nmg_CMKwasio (Cameroon)クワシオ語 (カメルーン)
nn_NONorwegian Nynorsk (Norway)ノルウェー語(ニーノシュク) (ノルウェー)
nnh_CMNgiemboon (Cameroon)ンジエムブーン語 (カメルーン)
nus_SSNuer (South Sudan)ヌエル語 (南スーダン)
nyn_UGNyankole (Uganda)ニャンコレ語 (ウガンダ)
om_ETOromo (Ethiopia)オロモ語 (エチオピア)
om_KEOromo (Kenya)オロモ語 (ケニア)
or_INOdia (India)オリヤー語 (インド)
os_GEOssetic (Georgia)オセット語 (ジョージア)
os_RUOssetic (Russia)オセット語 (ロシア)
pa_IN_#GuruPunjabi (Gurmukhi,India)パンジャブ語 (グルムキー文字,インド)
pa_PK_#ArabPunjabi (Arabic,Pakistan)パンジャブ語 (アラビア文字,パキスタン)
pa__#ArabPunjabi (Arabic)パンジャブ語 (アラビア文字)
pa__#GuruPunjabi (Gurmukhi)パンジャブ語 (グルムキー文字)
pl_PLPolish (Poland)ポーランド語 (ポーランド)
pl_SPPolish (Silesian)ポーランド語 (SP)
ps_AFPashto (Afghanistan)パシュトゥー語 (アフガニスタン)
pt_AOPortuguese (Angola)ポルトガル語 (アンゴラ)
pt_BRPortuguese (Brazil)ポルトガル語 (ブラジル)
pt_CVPortuguese (Cape Verde)ポルトガル語 (カーボベルデ)
pt_GWPortuguese (Guinea-Bissau)ポルトガル語 (ギニアビサウ)
pt_MOPortuguese (Macau)ポルトガル語 (マカオ)
pt_MZPortuguese (Mozambique)ポルトガル語 (モザンビーク)
pt_PTPortuguese (Portugal)ポルトガル語 (ポルトガル)
pt_STPortuguese (São Tomé & Príncipe)ポルトガル語 (サントメ・プリンシペ)
pt_TLPortuguese (Timor-Leste)ポルトガル語 (東ティモール)
qu_BOQuechua (Bolivia)ケチュア語 (ボリビア)
qu_ECQuechua (Ecuador)ケチュア語 (エクアドル)
qu_PEQuechua (Peru)ケチュア語 (ペルー)
rm_CHRomansh (Switzerland)ロマンシュ語 (スイス)
rn_BIRundi (Burundi)ルンディ語 (ブルンジ)
ro_MDRomanian (Moldova)ルーマニア語 (モルドバ)
ro_RORomanian (Romania)ルーマニア語 (ルーマニア)
rof_TZRombo (Tanzania)ロンボ語 (タンザニア)
ru_BYRussian (Belarus)ロシア語 (ベラルーシ)
ru_KGRussian (Kyrgyzstan)ロシア語 (キルギス)
ru_KZRussian (Kazakhstan)ロシア語 (カザフスタン)
ru_MDRussian (Moldova)ロシア語 (モルドバ)
ru_RURussian (Russia)ロシア語 (ロシア)
ru_UARussian (Ukraine)ロシア語 (ウクライナ)
rw_RWKinyarwanda (Rwanda)ルワンダ語 (ルワンダ)
rwk_TZRwa (Tanzania)ルワ語 (タンザニア)
sah_RUSakha (Russia)ヤクート語 (ロシア)
saq_KESamburu (Kenya)サンブル語 (ケニア)
sbp_TZSangu (Tanzania)サング語 (タンザニア)
se_FINorthern Sami (Finland)北サーミ語 (フィンランド)
se_NONorthern Sami (Norway)北サーミ語 (ノルウェー)
se_SENorthern Sami (Sweden)北サーミ語 (スウェーデン)
seh_MZSena (Mozambique)セナ語 (モザンビーク)
ses_MLKoyraboro Senni (Mali)コイラボロ・センニ語 (マリ)
sg_CFSango (Central African Republic)サンゴ語 (中央アフリカ共和国)
shi_MA_#LatnTachelhit (Latin,Morocco)タシルハイト語 (ラテン文字,モロッコ)
shi_MA_#TfngTachelhit (Tifinagh,Morocco)タシルハイト語 (ティフナグ文字,モロッコ)
shi__#LatnTachelhit (Latin)タシルハイト語 (ラテン文字)
shi__#TfngTachelhit (Tifinagh)タシルハイト語 (ティフナグ文字)
si_LKSinhala (Sri Lanka)シンハラ語 (スリランカ)
sk_SKSlovak (Slovakia)スロバキア語 (スロバキア)
sl_SISlovenian (Slovenia)スロベニア語 (スロベニア)
smn_FIInari Sami (Finland)イナリ・サーミ語 (フィンランド)
sn_ZWShona (Zimbabwe)ショナ語 (ジンバブエ)
so_DJSomali (Djibouti)ソマリ語 (ジブチ)
so_ETSomali (Ethiopia)ソマリ語 (エチオピア)
so_KESomali (Kenya)ソマリ語 (ケニア)
so_SOSomali (Somalia)ソマリ語 (ソマリア)
sq_ALAlbanian (Albania)アルバニア語 (アルバニア)
sq_MKAlbanian (Macedonia (FYROM))アルバニア語 (マケドニア)
sq_XKAlbanian (Kosovo)アルバニア語 (コソボ)
sr_BA_#CyrlSerbian (Cyrillic,Bosnia & Herzegovina)セルビア語 (キリル文字,ボスニア・ヘルツェゴビナ)
sr_BA_#LatnSerbian (Latin,Bosnia & Herzegovina)セルビア語 (ラテン文字,ボスニア・ヘルツェゴビナ)
sr_ME_#CyrlSerbian (Cyrillic,Montenegro)セルビア語 (キリル文字,モンテネグロ)
sr_ME_#LatnSerbian (Latin,Montenegro)セルビア語 (ラテン文字,モンテネグロ)
sr_RS_#CyrlSerbian (Cyrillic,Serbia)セルビア語 (キリル文字,セルビア)
sr_RS_#LatnSerbian (Latin,Serbia)セルビア語 (ラテン文字,セルビア)
sr_XK_#CyrlSerbian (Cyrillic,Kosovo)セルビア語 (キリル文字,コソボ)
sr_XK_#LatnSerbian (Latin,Kosovo)セルビア語 (ラテン文字,コソボ)
sr__#CyrlSerbian (Cyrillic)セルビア語 (キリル文字)
sr__#LatnSerbian (Latin)セルビア語 (ラテン文字)
sv_AXSwedish (Åland Islands)スウェーデン語 (オーランド諸島)
sv_FISwedish (Finland)スウェーデン語 (フィンランド)
sv_SESwedish (Sweden)スウェーデン語 (スウェーデン)
sw_CDSwahili (Congo (DRC))スワヒリ語 (コンゴ民主共和国(キンシャサ))
sw_KESwahili (Kenya)スワヒリ語 (ケニア)
sw_TZSwahili (Tanzania)スワヒリ語 (タンザニア)
sw_UGSwahili (Uganda)スワヒリ語 (ウガンダ)
ta_INTamil (India)タミル語 (インド)
ta_LKTamil (Sri Lanka)タミル語 (スリランカ)
ta_MYTamil (Malaysia)タミル語 (マレーシア)
ta_SGTamil (Singapore)タミル語 (シンガポール)
te_INTelugu (India)テルグ語 (インド)
teo_KETeso (Kenya)テソ語 (ケニア)
teo_UGTeso (Uganda)テソ語 (ウガンダ)
th_THThai (Thailand)タイ語 (タイ)
ti_ERTigrinya (Eritrea)ティグリニア語 (エリトリア)
ti_ETTigrinya (Ethiopia)ティグリニア語 (エチオピア)
to_TOTongan (Tonga)トンガ語 (トンガ)
tr_CYTurkish (Cyprus)トルコ語 (キプロス)
tr_TRTurkish (Turkey)トルコ語 (トルコ)
twq_NETasawaq (Niger)タサワク語 (ニジェール)
tzm_MACentral Atlas Tamazight (Morocco)中央アトラス・タマジクト語 (モロッコ)
ug_CNUyghur (China)ウイグル語 (中国)
uk_UAUkrainian (Ukraine)ウクライナ語 (ウクライナ)
ur_INUrdu (India)ウルドゥー語 (インド)
ur_PKUrdu (Pakistan)ウルドゥー語 (パキスタン)
uz_AF_#ArabUzbek (Arabic,Afghanistan)ウズベク語 (アラビア文字,アフガニスタン)
uz_UZ_#CyrlUzbek (Cyrillic,Uzbekistan)ウズベク語 (キリル文字,ウズベキスタン)
uz_UZ_#LatnUzbek (Latin,Uzbekistan)ウズベク語 (ラテン文字,ウズベキスタン)
uz__#ArabUzbek (Arabic)ウズベク語 (アラビア文字)
uz__#CyrlUzbek (Cyrillic)ウズベク語 (キリル文字)
uz__#LatnUzbek (Latin)ウズベク語 (ラテン文字)
vai_LR_#LatnVai (Latin,Liberia)ヴァイ語 (ラテン文字,リベリア)
vai_LR_#VaiiVai (Vai,Liberia)ヴァイ語 (ヴァイ文字,リベリア)
vai__#LatnVai (Latin)ヴァイ語 (ラテン文字)
vai__#VaiiVai (Vai)ヴァイ語 (ヴァイ文字)
vi_VNVietnamese (Vietnam)ベトナム語 (ベトナム)
vun_TZVunjo (Tanzania)ヴンジョ語 (タンザニア)
wae_CHWalser (Switzerland)ヴァリス語 (スイス)
xog_UGSoga (Uganda)ソガ語 (ウガンダ)
yav_CMYangben (Cameroon)ヤンベン語 (カメルーン)
yo_BJYoruba (Benin)ヨルバ語 (ベナン)
yo_NGYoruba (Nigeria)ヨルバ語 (ナイジェリア)
zgh_MAStandard Moroccan Tamazight (Morocco)タマージク語(モロッコ公用語) (モロッコ)
zh_CN_#HansChinese (Simplified Han,China)中国語 (漢字(簡体字),中国)
zh_HK_#HansChinese (Simplified Han,Hong Kong)中国語 (漢字(簡体字),香港)
zh_HK_#HantChinese (Traditional Han,Hong Kong)中国語 (漢字(繁体字),香港)
zh_MO_#HansChinese (Simplified Han,Macau)中国語 (漢字(簡体字),マカオ)
zh_MO_#HantChinese (Traditional Han,Macau)中国語 (漢字(繁体字),マカオ)
zh_SG_#HansChinese (Simplified Han,Singapore)中国語 (漢字(簡体字),シンガポール)
zh_TW_#HantChinese (Traditional Han,Taiwan)中国語 (漢字(繁体字),台湾)
zh__#HansChinese (Simplified Han)中国語 (漢字(簡体字))
zh__#HantChinese (Traditional Han)中国語 (漢字(繁体字))
zu_ZAZulu (South Africa)ズールー語 (南アフリカ)


 Android システムに依存するものなので、API Level によって、細かいものは違うかもしれない。

 Depending on the Android system, the details may differ depending on the API Level.


(関連記事)
【Unity】AssetStore版 FantomPlugin のセットアップ
【Unity】Androidのトーストやダイアログ、通知、音声認識、ハード音量操作など基本的な機能を使えるプラグインを作ってみた
【Android】【Applet】【Java】テキストファイルの読み込み・保存 まとめ


category: Android

thread: プログラミング

janre: コンピュータ

tag: Android資料 
tb: 0   cm: --

【AndroidStudio】AndroidStudio 2.x で DDMS を表示する  


 なんてことないことだけど、まぁ Android のネイティブは ADT(Eclipse)~ AndroidStudio 1.x の初期頃よくいじっていて、最近は触ってもいなかったわけですよ。で、久しぶりに最新版を触ると「DDMSどこやねん!」ってなったので(笑)、とりあえずメモ。VisualStudio なんかもそうだけど、ツールバーのデフォとかショートカットも変わっていくのは困るね。EclispeのショートカットをAndroidStudioに移行することもできるみたいだけど、結局はバージョンアップするたびに変わっていく可能性あるので、最近は常に最新のやり方に慣れる方法でやってる。インターネットのおかげでググれば大抵のことは出てくるしね。ただ英文も多いので日本語で簡単にまとめておくとイザというとき便利かと(笑)。

(※) Android Studio 2.3.3 / Windows10(x64) で確認



 AndroidStudio 2.x で DDMS を表示するには、大まかに以下のような流れになる。

1.ツールバーに「Android Device Monitor」を表示させる。

2.「Android Device Monitor」を起動して、「DDMS」のアイコンを押す。



 具体的には以下のようにする。

1.メニューから「File>Settings...」を開く。

2.左側の項目から「Appearance & Behavior>Menus and Toolbars」をクリックする(展開して選択)。

3.内容が表示されたら、「Main Toolbar>Android.Main.ToolBarActionGroup」(展開して探す)を選択し、ダイアログの右側にある「Add After...」を押す(※選択した位置の後ろにアイコンが追加される。「Add Separator」で縦線(区切り線)を入れることもできる。「Move Up/Down」で移動も可。位置は任意で良い)。


4.「Choose Actions To Add」のダイアログが開くので、「All Actions>Main menu>Tools>Android>Android Device Monitor」を選択し、「OK」を押す。


5.「Settings」のダイアログに戻ったら、下にある「OK」ボタンを押して適用する。


 これでツールバーに「Android Device Monitor」のアイコンが表示される。

 あとは「Android Device Monitor」を起動し、右上にある「DDMS」を押す。


 端末のファイルなどを見たい場合は、左ペインの「Device」で端末をクリックし、右ペインで「File Explorer」のタブを押せば、ファイルやディレクトリ構成が表示される。またファイルを選択し(アプリのデータなどは「data/data/[アプリのパッケージ名]/」以下に入っている)、「Pull」アイコンを押せばローカル(開発環境:PCなど)に落として中身を覗くこともできる。

(参考)
No shortcut for DDMS in Android Studio 2.2


(関連記事)
【Android】【Java】Preference 機能を使って設定データを読み込み・保存する
【Android】エミュレータでSDカードをマウントして使う方法 その2


category: Android

thread: プログラミング

janre: コンピュータ

tag: AndroidStudio 
tb: 0   cm: --


プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop