Veamos un ejemplo de Android Account y AccountManager.
Ejemplo 1: Cuenta y AccountManager
Este ejemplo le ayudará a aprender los siguientes conceptos:
- Cómo inicializar el AccountManager en Android
- Cómo obtener un array de todas las cuentas en un dispositivo android
- Cómo obtener las cuentas y mostrarlas en un ListView en Android.
Este ejemplo se compone de los siguientes archivos:
ListItem.java
ListItemAdapter.java
MainActivity.java
Paso 1: Crear el proyecto
- Abre tu IDE
AndroidStudio
. - Ve a
Archivo-->Nuevo-->Proyecto
para crear un nuevo proyecto.
Paso 2: Añadir dependencias
No se necesitan dependencias especiales para este proyecto.
Paso 3: Diseñar diseños
*(a). activity_main.xml
Cree un archivo llamado activity_main.xml
y diséñelo como sigue:
<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). Lista de elementos.xml
Crea un archivo llamado list_item.xml
y diséñalo como sigue:
<?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>
Paso 4: Escribir el código
Escriba el código de la siguiente manera:
*(a). ListItem.java
Crea un archivo llamado ListItem.java
.
Crea una clase para representar un elemento de la Lista
public class ListItem {
Añadir las propiedades de ListItem
public String name;
public String type;
Aquí está el código completo
package com.bgstation0.android.sample.account_;
public class ListItem {
//end
public String name;
public String type;
//end
}
*(b). ListItemAdapter.java
Crea un archivo llamado ListItemAdapter.java
.
Crear una clase adaptadora extendiendo el ArrayAdapter
.
public class ListItemAdapter extends ArrayAdapter<ListItem> {
Inicializar un LayoutInflater a null
LayoutInflater mInflater = null; // mInflaternullŏ.
Toma los objetos Context
, Integer, y ListItem
como parámetros a través del constructor
public ListItemAdapter(Context context, int resource, ListItem[] objects){
Pasarlos al constructor de la superclase
super(context, resource, objects);
Inicializar el LayoutInflater utilizando el context.getSystemService()
. Pasa el LAYOUT_INFLATER_SERVICE
.
mInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
Sobreescribir la función getView()
.
@Override
public View getView(int position, View convertView, ViewGroup parent){
Comprobar si el objeto View
es nulo. Sólo entonces inflaremos:
if (convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null); // nullȂ琶.
}
Referenciar los widgets y establecer sus 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
Este es el 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
Crea un archivo llamado MainActivity.java
.
Añade nuestras importaciones incluyendo las clases android.accounts.Account
y 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;
Crear nuestra MainActivity
. Extiende la clase Activity
:
public class MainActivity extends Activity {
Anula la función onCreaet()
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Inicializar el AccountManager
invocando el método get()
y pasando el Context
:
AccountManager accountManager = AccountManager.get(this); // accountManager
Crear un ArrayList de objetos ListItem
.
ArrayList<ListItem> list = new ArrayList<ListItem>();
Invoca el método getAccounts()
para obtener todas las cuentas del dispositivo.
Account[] accounts = accountManager.getAccounts();
Añadir todas las cuentas a nuestra Lista.
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
Hacer referencia a un ListView.
ListView listView1 = (ListView)findViewById(R.id.listview1);
Establecer el 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
Aquí está el 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
}
}
Ejecutar
Simplemente copie el código fuente en su proyecto Android, construya y ejecute.
Ejemplo 2: Inicializar AccountManager
Este tutorial le ayudará a aprender los siguientes conceptos:
- Cómo obtener el AccountManager
Este ejemplo comprenderá los siguientes archivos:
MainActivity.java
Paso 1: Crear Proyecto
- Abre tu IDE
AndroidStudio
. - Ve a
Archivo-->Nuevo-->Proyecto
para crear un nuevo proyecto.
Paso 2: Dependencias
No se necesitan dependencias.
Paso 3: Diseños
*(a). activity_main.xml
Cree un archivo llamado activity_main.xml
y diséñelo como sigue:
<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>
Paso 4: Escribir el código
Escriba el código de la siguiente manera:
*(a). MainActivity.java
Crea un archivo llamado MainActivity.java
.
Simplemente usa el método get()
y pasa el contexto
AccountManager accountManager = AccountManager.get(this);
Luego puedes lanzarlo a cadena y mostrarlo:
Toast.makeText(this, "accountManager = " + accountManager.toString(), Toast.LENGTH_LONG).show(); // accountManagero.
Aquí está el 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
}
}
Ejecutar
Simplemente copie el código fuente en su proyecto Android, construya y ejecute.
Ejemplo 3: Obtener AccountManager y mostrarlo
Este tutorial le ayudará a aprender los siguientes conceptos:
- Cómo obtener el AccountManager y mostrarlo en un mensaje `Toast
Este ejemplo comprenderá los siguientes archivos:
MainActivity.java
Paso 1: Crear Proyecto
- Abre tu IDE
AndroidStudio
. - Ve a
Archivo-->Nuevo-->Proyecto
para crear un nuevo proyecto.
Paso 2: Añadir Dependencias
Paso 3: Diseñar diseños
*(a). activity_main.xml
Cree un archivo llamado activity_main.xml
y diséñelo como sigue:
<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>
Paso 4: Escribir el código
Escriba el código de la siguiente manera:
*(a). MainActivity.java
Crea un archivo llamado MainActivity.java
.
Importar AccountManager entre otras importaciones:
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
Crear una MainActivity
public class MainActivity extends Activity {
Sobrescribir el onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Invoca el AccountManager.get()
, pasando el contexto y castándolo a string para luego mostrar en un mensaje Toast
.
Toast.makeText(this, AccountManager.get(this).toString(), Toast.LENGTH_LONG).show(); // AccountManager.get(this)g[Xg.
Aquí está el 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
}
}
Ejecutar
Simplemente copia el código fuente en tu proyecto Android, construye y ejecuta.
Ejemplo 4: Listado de todas las cuentas
Este ejemplo se compone de los siguientes archivos
ListItem.java
ListItemAdapter.java
MainActivity.java
Paso 1: Crear el proyecto
- Abre tu IDE
AndroidStudio
. - Ve a
Archivo-->Nuevo-->Proyecto
para crear un nuevo proyecto.
Paso 2: Dependencias
No se necesitan dependencias.
Paso 3: Diseños
*(a). activity_main.xml
Cree un archivo llamado activity_main.xml
y diséñelo como sigue:
<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). lista_de_artículos.xml
Crea un archivo llamado list_item.xml
y diséñalo como sigue:
<?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>
Paso 4: Escribir el código
Escriba el código de la siguiente manera:
*(a). ListItem.java
Crea un archivo llamado ListItem.java
.
Aquí está el código completo
package com.bgstation0.android.sample.accountmanager_;
// XgACeNXListItem
public class ListItem { // ListItem̒`.
public String name; // O.
}
***(b). Adaptador de lista de artículos.java
Crea un fichero llamado ListItemAdapter.java
.
Este es el 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
Crear un archivo llamado MainActivity.java
.
Este es el 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.
}
}
Ejecutar
Simplemente copie el código fuente en su proyecto Android, construya y ejecute.
Ejemplo 5: Obtener cuentas por tipo
Este tutorial le ayudará a aprender los siguientes conceptos:
- Cómo obtener cuentas por tipo en un dispositivo Android
Este ejemplo comprenderá los siguientes archivos:
ListItem.java
ListItemAdapter.java
MainActivity.java
Paso 1: Crear el proyecto
- Abre tu IDE
AndroidStudio
. - Ve a
Archivo-->Nuevo-->Proyecto
para crear un nuevo proyecto.
Paso 2: Añadir Dependencias
Paso 3: Diseñar diseños
*(a). activity_main.xml
Cree un archivo llamado activity_main.xml
y diséñelo como sigue:
<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). Lista de elementos.xml
Create a file named list_item.xml
and design it as follows:
<?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>
Step 4: Write Code
Write Code as follows:
*(a). ListItem.java
Create a file named ListItem.java
Create a simple model class
public class ListItem {
public String name;
public String type;
}
Here is the full code
package com.bgstation0.android.sample.accountmanager_;
public class ListItem {
public String name;
public String type;
}
//end
*(b). ListItemAdapter.java
Create a file named ListItemAdapter.java
Extend the ArrayAdapter
public class ListItemAdapter extends ArrayAdapter<ListItem> {
Create the constructor
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>();
Si quieres obtener las cuentas utiliza el método getAccounts()
.
//Account[] accounts = accountManager.getAccounts(); // accountManager.getAccounts()
Para obtener las cuentas por tipo utilice el método getAccountsByType()
como se muestra a continuación:
Account[] accounts = accountManager.getAccountsByType("com.google");
Ahora haz un bucle con las cuentas y añádelas a nuestra Lista
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
Prepare un ListView
ListView listView1 = (ListView)findViewById(R.id.listview1);
Vincula las cuentas a nuestro adaptador y luego el adaptador al ListView:
ListItem[] array = new ListItem[list.size()]; // array.
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter);
Aquí está el 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
}
}
Ejecutar
Simplemente copie el código fuente en su proyecto Android, construya y ejecute.