Saltar al contenido principal

Ejemplos de Account y AccountManager en Android

Veamos un ejemplo de Android Account y AccountManager.

[lwptoc]

Ejemplo 1: Cuenta y AccountManager

Este ejemplo le ayudará a aprender los siguientes conceptos:

  1. Cómo inicializar el AccountManager en Android
  2. Cómo obtener un array de todas las cuentas en un dispositivo android
  3. 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

  1. Abre tu IDE AndroidStudio.
  2. 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:

  1. Cómo obtener el AccountManager

Este ejemplo comprenderá los siguientes archivos:

  • MainActivity.java

Paso 1: Crear Proyecto

  1. Abre tu IDE AndroidStudio.
  2. 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:

  1. Cómo obtener el AccountManager y mostrarlo en un mensaje `Toast

Este ejemplo comprenderá los siguientes archivos:

  • MainActivity.java

Paso 1: Crear Proyecto

  1. Abre tu IDE AndroidStudio.
  2. 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

  1. Abre tu IDE AndroidStudio.
  2. 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:

  1. 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

  1. Abre tu IDE AndroidStudio.
  2. 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 LayoutInflater 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.