AndroidのアカウントとAccountManagerの例を見てみましょう。
を参照してください。
例1: アカウントと AccountManager
この例は、以下の概念を学ぶのに役立ちます。
- AndroidのAccountManagerを初期化する方法。
- アンドロイドデバイスの全アカウントの配列を取得する方法
- Android でアカウントを取得し、ListView に表示する方法。
このサンプルは、以下のファイルから構成されます。
ListItem.java
- ListItemAdapter.java`(リストアイテムアダプター)。
MainActivity.java
です。
ステップ1:プロジェクトの作成
- AndroidStudio` IDEを起動します。
-
- "File-->New-->Project "で新しいプロジェクトを作成します。
ステップ2: 依存関係の追加
このプロジェクトでは、特別な依存関係は必要ありません。
ステップ3: レイアウトの設計
*(a). activity_main.xml
を作成します。
activity_main.xml
という名前のファイルを作成し、以下のようにデザインする。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView android:id="@+id/listview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
*(b). list_item.xml
ファイルを作成します。
list_item.xml`という名前のファイルを作成し、以下のようにデザインする。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:id="@+id/list_item_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView android:id="@+id/list_item_type"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
ステップ4: コードの記述
以下のようにコードを記述する。
*(a). ListItem.java`を作成する。
ListItem.java`という名前のファイルを作成する。
Listアイテムを表現するクラスを作成する。
public class ListItem {
ListItemのプロパティを追加する
public String name;
public String type;
以下はコードの一部です。
package com.bgstation0.android.sample.account_;
public class ListItem {
//end
public String name;
public String type;
//end
}
*(b). ListItemAdapter.java`を作成します。
ListItemAdapter.java`という名前のファイルを作成する。
ArrayAdapter` を継承したアダプタクラスを作成する。
public class ListItemAdapter extends ArrayAdapter<ListItem> {
LayoutInflater を null で初期化します。
LayoutInflater mInflater = null; // mInflaternullŏ.
コンストラクタに Context
, Integer,
ListItem` オブジェクトを渡して、パラメータとして受け取る。
public ListItemAdapter(Context context, int resource, ListItem[] objects){
スーパークラスのコンストラクタに渡す。
super(context, resource, objects);
context.getSystemService() を使って LayoutInflater を初期化します。LAYOUT_INFLATER_SERVICE
を渡します。
mInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
getView()`関数をオーバーライドします。
@Override
public View getView(int position, View convertView, ViewGroup parent){
View` オブジェクトが NULL かどうかをチェックします。その時だけ膨らませる。
if (convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null); // nullȂ琶.
}
ウィジェットを参照し、その値を設定します。
TextView tvName = (TextView)convertView.findViewById(R.id.list_item_name); // tvName.
tvName.setText(getItem(position).name); // name
TextView tvType = (TextView)convertView.findViewById(R.id.list_item_type); // tvType.
tvType.setText(getItem(position).type); // type
以下がそのコードです。
package com.bgstation0.android.sample.account_;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class ListItemAdapter extends ArrayAdapter<ListItem> {
//end
LayoutInflater mInflater = null; // mInflaternullŏ.
//end
public ListItemAdapter(Context context, int resource, ListItem[] objects){
//end
super(context, resource, objects);
//end
mInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
//end
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
//end
if (convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null); // nullȂ琶.
}
//end
TextView tvName = (TextView)convertView.findViewById(R.id.list_item_name); // tvName.
tvName.setText(getItem(position).name); // name
TextView tvType = (TextView)convertView.findViewById(R.id.list_item_type); // tvType.
tvType.setText(getItem(position).type); // type
//end
return convertView; // convertView.
}
}
*(c). MainActivity.java
を作成します。
MainActivity.java`という名前のファイルを作成します。
Android.accounts.Account と
android.accounts.AccountManager` クラスを含むインポートを追加します。
import java.util.ArrayList;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
MainActivityを作成します。Activity
クラスを拡張します。
public class MainActivity extends Activity {
onCreaet()` 関数をオーバーライドします。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
get() メソッドを呼び出して
AccountManager を初期化し、
Context` を渡します。
AccountManager accountManager = AccountManager.get(this); // accountManager
ListItem` オブジェクトの ArrayList を作成する。
ArrayList<ListItem> list = new ArrayList<ListItem>();
getAccounts()` メソッドを呼び出して、デバイスに登録されているすべてのアカウントを取得します。
Account[] accounts = accountManager.getAccounts();
すべてのアカウントをListに追加します。
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
ListViewを参照する
ListView listView1 = (ListView)findViewById(R.id.listview1);
アダプタを設定する
ListItem[] array = new ListItem[list.size()]; // array
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter); // listItemAdapter
以下は、コード全体です。
package com.bgstation0.android.sample.account_;
import java.util.ArrayList;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
//end
public class MainActivity extends Activity {
//end
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//end
AccountManager accountManager = AccountManager.get(this); // accountManager
//end
ArrayList<ListItem> list = new ArrayList<ListItem>();
//end
Account[] accounts = accountManager.getAccounts();
//end
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
//end
ListView listView1 = (ListView)findViewById(R.id.listview1);
//end
ListItem[] array = new ListItem[list.size()]; // array
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter); // listItemAdapter
//end
}
}
実行
ソースコードをAndroidプロジェクトにコピーし、ビルドして実行します。
例2:AccountManagerの初期化
このチュートリアルでは、以下の概念を学ぶことができます。
- AccountManager の取得方法
この例では、以下のファイルから構成されます。
MainActivity.java
です。
ステップ1:プロジェクトの作成
- AndroidStudio` IDEを開く。
-
- "File-->New-->Project "で新しいプロジェクトを作成します。
ステップ2: 依存関係
依存関係は必要ありません。
ステップ3: デザインレイアウト
*(a). activity_main.xml
を作成します。
activity_main.xml
という名前のファイルを作成し、以下のようにデザインする。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
ステップ4: コードの記述
以下のようにコードを書いてください。
*(a). MainActivity.java
.
MainActivity.java`という名前のファイルを作成します。
get()` メソッドにコンテキストを渡すだけです。
AccountManager accountManager = AccountManager.get(this);
そして、それをstringにキャストして表示します。
Toast.makeText(this, "accountManager = " + accountManager.toString(), Toast.LENGTH_LONG).show(); // accountManagero.
以下がそのコードです。
package com.bgstation0.android.sample.accountmanager_;
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AccountManager accountManager = AccountManager.get(this);
//end
Toast.makeText(this, "accountManager = " + accountManager.toString(), Toast.LENGTH_LONG).show(); // accountManagero.
//end
}
}
実行
ソースコードをAndroidプロジェクトにコピーし、ビルドして実行します。
例3:AccountManagerの取得と表示
このチュートリアルでは、以下の概念を学ぶことができます。
-
- AccountManagerを取得し、それをトーストメッセージで表示する方法
この例は、以下のファイルから構成されます。
MainActivity.java
です。
ステップ1:プロジェクトの作成
- AndroidStudio` IDEを起動します。
-
- "File-->New-->Project "で新しいプロジェクトを作成します。
ステップ2: 依存関係の追加
ステップ3: レイアウトの設計
*(a). activity_main.xml
を作成します。
activity_main.xml
というファイルを作成し、以下のようにデザインします。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
ステップ4: コードの記述
以下のようにコードを書いてください。
*(a). MainActivity.java
を作成する。
MainActivity.java`という名前のファイルを作成する。
AccountManagerをインポートする。
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
MainActivityを作成します。
public class MainActivity extends Activity {
onCreateをオーバーライドします。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AccountManager.get()
を呼び出し、コンテキストを渡して文字列にキャストし、Toast
メッセージで表示します。
Toast.makeText(this, AccountManager.get(this).toString(), Toast.LENGTH_LONG).show(); // AccountManager.get(this)g[Xg.
以下がコード全体です。
package com.bgstation0.android.sample.accountmanager_;
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
//end
public class MainActivity extends Activity {
//end
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//end
Toast.makeText(this, AccountManager.get(this).toString(), Toast.LENGTH_LONG).show(); // AccountManager.get(this)g[Xg.
//end
}
}
実行
ソースコードをAndroidプロジェクトにコピーし、ビルドして実行します。
例 4: すべてのアカウントをリストアップする
この例では、以下のファイルから構成されます。
ListItem.java
- ListItemAdapter.java`。
MainActivity.java
です。
ステップ1: プロジェクトの作成
- AndroidStudio` IDEを起動します。
-
- "File-->New-->Project "で新しいプロジェクトを作成します。
ステップ2: 依存関係
依存関係は必要ありません。
ステップ3: デザインレイアウト
*(a). activity_main.xml
を作成します。
activity_main.xml
という名前のファイルを作成し、以下のようにデザインする。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView android:id="@+id/listview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
*(b). list_item.xml
ファイルを作成します。
list_item.xml`という名前のファイルを作成し、以下のようにデザインする。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:id="@+id/list_item_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
ステップ4: コードの記述
以下のようにコードを記述する。
*(a). ListItem.java`を作成する。
ListItem.java`という名前のファイルを作成する。
以下はコードの全文です。
package com.bgstation0.android.sample.accountmanager_;
// XgACeNXListItem
public class ListItem { // ListItem̒`.
public String name; // O.
}
*(b). ListItemAdapter.java`を作成する。
ListItemAdapter.java`という名前のファイルを作成する。
以下がそのコードです。
package com.bgstation0.android.sample.accountmanager_;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
// ListItempA_v^[ListItemAdapter
public class ListItemAdapter extends ArrayAdapter<ListItem> {
// otB[h̒`.
LayoutInflater mInflater = null; // mInflaternullŏ.
// RXgN^
public ListItemAdapter(Context context, int resource, ListItem[] objects){
super(context, resource, objects); // eRXgN^.
mInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE); // mInflater̎擾.
}
// ACẽJX^}CY.
@Override
public View getView(int position, View convertView, ViewGroup parent){
// convertViewnull̎.
if (convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null); // nullȂ琶.
}
TextView tvName = (TextView)convertView.findViewById(R.id.list_item_name); // tvName擾.
tvName.setText(getItem(position).name); // nameZbg.
return convertView; // convertViewԂ.
}
}
*(c). MainActivity.java
を作成する。
MainActivity.java`という名前のファイルを作成する。
以下がそのコードです。
package com.bgstation0.android.sample.accountmanager_;
import java.util.ArrayList;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// AccountManagerIuWFNg擾, .
AccountManager accountManager = AccountManager.get(this); // accountManagerɊi[.
// AJEgXg̎擾.
ArrayList<ListItem> list = new ArrayList<ListItem>(); // list.
Account[] accounts = accountManager.getAccounts(); // accountManager.getAccountsaccounts擾.
for (Account account : accounts){ // accountsaccountôvfJԂ.
ListItem item = new ListItem(); // item.
item.name = account.name; // item.nameaccount.nameZbg.
list.add(item); // list.additemlj.
}
// listView1̎擾.
ListView listView1 = (ListView)findViewById(R.id.listview1); // listView1擾.
// ListItemAdapter̐.
ListItem[] array = new ListItem[list.size()]; // array.
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter); // listItemAdapterZbg.
}
}
実行
ソースコードをAndroidプロジェクトにコピーし、ビルドして実行します。
例5:タイプ別にアカウントを取得する
このチュートリアルでは、以下の概念を学ぶことができます。
-
- Android端末のアカウントを種類別に取得する方法
この例では、以下のファイルから構成されています。
ListItem.java
- ListItemAdapter.java`(リストアイテムアダプター)。
MainActivity.java
です。
ステップ1: プロジェクトの作成
- AndroidStudio` IDEを起動します。
-
- "File-->New-->Project "で新しいプロジェクトを作成します。
ステップ2: 依存関係の追加
ステップ3: レイアウトの設計
*(a). activity_main.xml
を作成します。
activity_main.xml
という名前のファイルを作成し、以下のようにデザインします。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ListView android:id="@+id/listview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
*(b). list_item.xml
ファイルを作成します。
list_item.xml`という名前のファイルを作成し、以下のようにデザインする。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView android:id="@+id/list_item_name"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<TextView android:id="@+id/list_item_type"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
ステップ4: コードの記述
以下のようにコードを記述する。
*(a). ListItem.java`を作成する。
ListItem.java`という名前のファイルを作成する。
簡単なモデルクラスを作成する。
public class ListItem {
public String name;
public String type;
}
以下がそのコードです。
package com.bgstation0.android.sample.accountmanager_;
public class ListItem {
public String name;
public String type;
}
//end
*(b). ListItemAdapter.java`を作成します。
ListItemAdapter.java`という名前のファイルを作成する。
ArrayAdapter` を拡張する。
public class ListItemAdapter extends ArrayAdapter<ListItem> {
コンストラクタを作成する。
public ListItemAdapter(Context context, int resource, ListItem[] objects){
super(context, resource, objects);
mInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
}
Override the getView()
method. We inflate our list_item
layout here:
@Override
public View getView(int position, View convertView, ViewGroup parent){
// convertViewnull̎.
if (convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null);
}
TextView tvName = (TextView)convertView.findViewById(R.id.list_item_name); // tvName.
tvName.setText(getItem(position).name); // name.
TextView tvType = (TextView)convertView.findViewById(R.id.list_item_type); // tvType.
tvType.setText(getItem(position).type); // type.
return convertView; // convertViewԂ.
}
Here is the full code:
package com.bgstation0.android.sample.accountmanager_;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class ListItemAdapter extends ArrayAdapter<ListItem> {
//end
//Initialize the <code>LayoutInflater</code> to null
LayoutInflater mInflater = null;
//end
public ListItemAdapter(Context context, int resource, ListItem[] objects){
super(context, resource, objects);
mInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
}
//end
@Override
public View getView(int position, View convertView, ViewGroup parent){
// convertViewnull̎.
if (convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null);
}
TextView tvName = (TextView)convertView.findViewById(R.id.list_item_name); // tvName.
tvName.setText(getItem(position).name); // name.
TextView tvType = (TextView)convertView.findViewById(R.id.list_item_type); // tvType.
tvType.setText(getItem(position).type); // type.
return convertView; // convertViewԂ.
}
//end
}
(c). MainActivity.java
Create a file named MainActivity.java
:
Add your imports:
import java.util.ArrayList;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
Extend the Activity
class:
public class MainActivity extends Activity
Get the AccountManager instance:
ArrayList<ListItem> list = new ArrayList<ListItem>();
If you want to get Accounts use the getAccounts()
method
//Account[] accounts = accountManager.getAccounts(); // accountManager.getAccounts()
To get the accounts by type use the getAccountsByType()
method as shown below:
Account[] accounts = accountManager.getAccountsByType("com.google");
Now loop through the accounts and add them to our List
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
Prepare a ListView
ListView listView1 = (ListView)findViewById(R.id.listview1);
Bind the accounts to our adapter and then the adapter to the ListView:
ListItem[] array = new ListItem[list.size()]; // array.
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter);
Here is the full code
package com.bgstation0.android.sample.accountmanager_;
import java.util.ArrayList;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
//end
public class MainActivity extends Activity {
//end
//Override the onCreate():
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//end
AccountManager accountManager = AccountManager.get(this);
//end
ArrayList<ListItem> list = new ArrayList<ListItem>();
//end
//Account[] accounts = accountManager.getAccounts(); // accountManager.getAccounts()
//end
Account[] accounts = accountManager.getAccountsByType("com.google");
//end
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
//end
ListView listView1 = (ListView)findViewById(R.id.listview1);
//end
ListItem[] array = new ListItem[list.size()]; // array.
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter);
//end
}
}
Run
Simply copy the source code into your Android Project,Build and Run.