Vejamos uma conta Android e exemplos de AccountManager.
Exemplo 1: conta e gerente de contas
Este exemplo ajudará você a aprender os seguintes conceitos:
- Como inicializar o AccountManager no Android
- Como obter uma matriz de todas as contas em um dispositivo Android
- Como obter contas e mostrá-las em um ListView no Android.
Este exemplo incluirá os seguintes arquivos:
ListItem.java
ListItemAdapter.java
MainActivity.java
Etapa 1: criar projeto
- Abra seu IDE
AndroidStudio
. - Vá para
Arquivo-->Novo-->Projeto
para criar um novo projeto.
Etapa 2: adicionar dependências
Nenhuma dependência especial é necessária para este projeto.
Etapa 3: Layouts de design
*(uma). activity_main.xml
Crie um arquivo chamado activity_main.xml
e projete-o da seguinte forma:
<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
Crie um arquivo chamado list_item.xml
e projete-o da seguinte forma:
<?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>
Etapa 4: escrever código
Escreva o código da seguinte forma:
*(uma). ListItem.java
Crie um arquivo chamado ListItem.java
Criar uma classe para representar um item de lista
public class ListItem {
Adicionar propriedades ListItem
public String name;
public String type;
Aqui está o código completo
package com.bgstation0.android.sample.account_;
public class ListItem {
//end
public String name;
public String type;
//end
}
*(b). ListItemAdapter.java
Crie um arquivo chamado ListItemAdapter.java
Crie uma classe de adaptador estendendo o ArrayAdapter
public class ListItemAdapter extends ArrayAdapter<ListItem> {
Inicialize um LayoutInflater para null
LayoutInflater mInflater = null; // mInflaternullŏ.
Pegue os objetos Context
, Integer e ListItem
como parâmetros por meio do construtor
public ListItemAdapter(Context context, int resource, ListItem[] objects){
Passe-os para o construtor da superclasse
super(context, resource, objects);
Inicialize o LayoutInflater usando o context.getSystemService()
. Passe no LAYOUT_INFLATER_SERVICE
mInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
Substituir a função getView()
@Override
public View getView(int position, View convertView, ViewGroup parent){
Verifique se o objeto View
é nulo. Só então devemos inflar:
if (convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null); // nullȂ琶.
}
Faça referência a widgets e defina seus valores:
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
Aqui está o código completo
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
Crie um arquivo chamado MainActivity.java
Adicione nossas importações incluindo as classes android.accounts.Account
e 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;
Crie nossa MainActivity
. Estenda a classe Activity
:
public class MainActivity extends Activity {
Substitua a função onCreaet()
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Inicialize o AccountManager
invocando o método get()
e passando o Context
:
AccountManager accountManager = AccountManager.get(this); // accountManager
Crie um ArrayList de objetos ListItem
ArrayList<ListItem> list = new ArrayList<ListItem>();
Invoque o getAccounts()
para obter todas as contas no dispositivo.
Account[] accounts = accountManager.getAccounts();
Adicione todas as contas à nossa Lista.
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
Referenciar um ListView
ListView listView1 = (ListView)findViewById(R.id.listview1);
Defina o adaptador
ListItem[] array = new ListItem[list.size()]; // array
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter); // listItemAdapter
Aqui está o código completo
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
}
}
Correr
Basta copiar o código-fonte em seu Android Project, Build and Run.
Exemplo 2: Inicialize o AccountManager
Este tutorial ajudará você a aprender os seguintes conceitos:
- Como obter o AccountManager
Este exemplo incluirá os seguintes arquivos:
MainActivity.java
Etapa 1: criar projeto
- Abra seu IDE
AndroidStudio
. - Vá para
Arquivo-->Novo-->Projeto
para criar um novo projeto.
Etapa 2: dependências
Não são necessárias dependências.
Etapa 3: Layouts de design
*(uma). activity_main.xml
Crie um arquivo chamado activity_main.xml
e projete-o da seguinte forma:
<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>
Etapa 4: escrever código
Escreva o código da seguinte forma:
*(uma). MainActivity.java
Crie um arquivo chamado MainActivity.java
Basta usar o método get()
e passar o contexto
AccountManager accountManager = AccountManager.get(this);
Então você pode convertê-lo em string e mostrá-lo:
Toast.makeText(this, "accountManager = " + accountManager.toString(), Toast.LENGTH_LONG).show(); // accountManagero.
Aqui está o código completo
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
}
}
Correr
Basta copiar o código-fonte em seu Android Project, Build and Run.
Exemplo 3: Obtenha o AccountManager e mostre-o
Este tutorial ajudará você a aprender os seguintes conceitos:
- Como obter o AccountManager e mostrá-lo em uma mensagem
Toast
Este exemplo incluirá os seguintes arquivos:
MainActivity.java
Etapa 1: criar projeto
- Abra seu IDE
AndroidStudio
. - Vá para
Arquivo-->Novo-->Projeto
para criar um novo projeto.
Etapa 2: adicionar dependências
Etapa 3: Layouts de design
*(uma). activity_main.xml
Crie um arquivo chamado activity_main.xml
e projete-o da seguinte forma:
<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>
Etapa 4: escrever código
Escreva o código da seguinte forma:
*(uma). MainActivity.java
Crie um arquivo chamado MainActivity.java
Importar AccountManager entre outras importações:
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
Criar uma MainActivity
public class MainActivity extends Activity {
Substitua o onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Invoque o AccountManager.get()
, passando no contexto e converta-o em string, em seguida, mostre em uma mensagem Toast
Toast.makeText(this, AccountManager.get(this).toString(), Toast.LENGTH_LONG).show(); // AccountManager.get(this)g[Xg.
Aqui está o código completo
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
}
}
Correr
Basta copiar o código-fonte em seu Android Project, Build and Run.
Exemplo 4: listar todas as contas
Este exemplo incluirá os seguintes arquivos:
ListItem.java
ListItemAdapter.java
MainActivity.java
Etapa 1: criar projeto
- Abra seu IDE
AndroidStudio
. - Vá para
Arquivo-->Novo-->Projeto
para criar um novo projeto.
Etapa 2: dependências
Não são necessárias dependências.
Etapa 3: Layouts de design
*(uma). activity_main.xml
Crie um arquivo chamado activity_main.xml
e projete-o da seguinte forma:
<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
Crie um arquivo chamado list_item.xml
e projete-o da seguinte forma:
<?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>
Etapa 4: escrever código
Escreva o código da seguinte forma:
*(uma). ListItem.java
Crie um arquivo chamado ListItem.java
Aqui está o código completo
package com.bgstation0.android.sample.accountmanager_;
// XgACeNXListItem
public class ListItem { // ListItem̒`.
public String name; // O.
}
*(b). ListItemAdapter.java
Crie um arquivo chamado ListItemAdapter.java
Aqui está o código completo
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
Crie um arquivo chamado MainActivity.java
Aqui está o código completo
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.
}
}
Correr
Basta copiar o código-fonte em seu Android Project, Build and Run.
Exemplo 5: obter contas por tipo
Este tutorial ajudará você a aprender os seguintes conceitos:
- Como obter contas por tipo em um dispositivo Android
Este exemplo incluirá os seguintes arquivos:
ListItem.java
ListItemAdapter.java
MainActivity.java
Etapa 1: criar projeto
- Abra seu IDE
AndroidStudio
. - Vá para
Arquivo-->Novo-->Projeto
para criar um novo projeto.
Etapa 2: adicionar dependências
Etapa 3: Layouts de design
*(uma). activity_main.xml
Crie um arquivo chamado activity_main.xml
e projete-o da seguinte forma:
<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
Crie um arquivo chamado list_item.xml
e projete-o da seguinte forma:
<?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>
Etapa 4: escrever código
Escreva o código da seguinte forma:
*(uma). ListItem.java
Crie um arquivo chamado ListItem.java
Criar uma classe de modelo simples
public class ListItem {
public String name;
public String type;
}
Aqui está o código completo
package com.bgstation0.android.sample.accountmanager_;
public class ListItem {
public String name;
public String type;
}
//end
*(b). ListItemAdapter.java
Crie um arquivo chamado ListItemAdapter.java
Estenda o ArrayAdapter
public class ListItemAdapter extends ArrayAdapter<ListItem> {
Crie o construtor
public ListItemAdapter(Context context, int resource, ListItem[] objects){
super(context, resource, objects);
mInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
}
Substitua o método getView()
. Nós inflamos nosso layout list_item
aqui:
@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Ԃ.
}
Aqui está o código completo:
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
Crie um arquivo chamado MainActivity.java
:
Adicione suas importações:
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;
Estenda a classe Activity
:
public class MainActivity extends Activity
Obtenha a instância AccountManager:
ArrayList<ListItem> list = new ArrayList<ListItem>();
Se você deseja obter contas, use o método getAccounts()
//Account[] accounts = accountManager.getAccounts(); // accountManager.getAccounts()
Para obter as contas por tipo use o método getAccountsByType()
conforme mostrado abaixo:
Account[] accounts = accountManager.getAccountsByType("com.google");
Agora percorra as contas e adicione-as à nossa lista
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
Preparar um ListView
ListView listView1 = (ListView)findViewById(R.id.listview1);
Vincule as contas ao nosso adaptador e, em seguida, o adaptador ao ListView:
ListItem[] array = new ListItem[list.size()]; // array.
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter);
Aqui está o código completo
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
}
}
Correr
Basta copiar o código-fonte em seu Android Project, Build and Run.