Exemples de comptes et AccountManager Android
Examinons des exemples de comptes et de gestionnaires de comptes Android.
[lwptoc]
Exemple 1 : Compte et AccountManager
Cet exemple vous permettra d'apprendre les concepts suivants :
- Comment initialiser l'AccountManager dans Android
- Comment obtenir un tableau de tous les comptes d'un appareil Android ? 3.
- Comment obtenir des comptes et les afficher dans une ListView dans Android.
Cet exemple comprendra les fichiers suivants :
ListItem.javaListItemAdapter.javaMainActivity.java
Etape 1 : Créer le projet
- Ouvrez votre IDE
AndroidStudio. - Allez sur
File-->New-->Projectpour créer un nouveau projet.
Étape 2 : Ajouter les dépendances
Aucune dépendance particulière n'est nécessaire pour ce projet.
Étape 3 : Conception de la mise en page
***(a). `activity_main.xml``
Créez un fichier nommé activity_main.xml et concevez-le comme suit :
<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
Créez un fichier nommé list_item.xml et concevez-le comme suit :
<?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>
Étape 4 : Écrire le code
Ecrivez le code comme suit :
***(a). `ListItem.java``
Créer un fichier nommé ListItem.java.
Créez une classe pour représenter un élément de liste
public class ListItem {
Ajouter les propriétés de ListItem
public String name;
public String type;
Voici le code complet
package com.bgstation0.android.sample.account_;
public class ListItem {
//end
public String name;
public String type;
//end
}
***(b). `ListItemAdapter.java``
Créez un fichier nommé ListItemAdapter.java.
Créer une classe d'adaptateur en étendant le ArrayAdapter.
public class ListItemAdapter extends ArrayAdapter<ListItem> {
Initialisez un LayoutInflater à null.
LayoutInflater mInflater = null; // mInflaternullŏ.
Prendre un objet Context, un Integer, et un objet ListItem comme paramètres via le constructeur.
public ListItemAdapter(Context context, int resource, ListItem[] objects){
Passez-les au constructeur de la super classe.
super(context, resource, objects);
Initialisez le LayoutInflater en utilisant le context.getSystemService(). Passez dans le LAYOUT_INFLATER_SERVICE.
mInflater = (LayoutInflater)context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
Remplacez la fonction getView().
@Override
public View getView(int position, View convertView, ViewGroup parent){
Vérifiez si l'objet View est nul. C'est seulement dans ce cas que nous gonflons :
if (convertView == null){
convertView = mInflater.inflate(R.layout.list_item, null); // nullȂ琶.
}
Référencez les widgets et définissez leurs valeurs :
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
Voici le code complet
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
Créez un fichier nommé MainActivity.java.
Ajoutez nos importations, notamment les classes android.accounts.Account et 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;
Créez notre MainActivity. Étendez la classe Activity :
public class MainActivity extends Activity {
Remplacez la fonction onCreaet() :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Initialisez le AccountManageren invoquant la méthode get() et en passant le Context :
AccountManager accountManager = AccountManager.get(this); // accountManager
Créez une ArrayList d'objets ListItem.
ArrayList<ListItem> list = new ArrayList<ListItem>();
Invoquez la méthode getAccounts() pour obtenir tous les comptes de l'appareil.
Account[] accounts = accountManager.getAccounts();
Ajoutez tous les comptes à notre liste.
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
Référencement d'une ListView
ListView listView1 = (ListView)findViewById(R.id.listview1);
Définissez l'adaptateur
ListItem[] array = new ListItem[list.size()]; // array
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter); // listItemAdapter
Voici le code complet
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
}
}
Run
Il suffit de copier le code source dans votre projet Android, de le construire et de l'exécuter.
Exemple 2 : Initialiser AccountManager
Ce tutoriel vous aidera à apprendre les concepts suivants :
- Comment obtenir l'AccountManager
Cet exemple comprendra les fichiers suivants :
MainActivity.java
Étape 1 : Créer le projet
- Ouvrez votre IDE
AndroidStudio. - Allez dans
File-->New-->Projectpour créer un nouveau projet.
Étape 2 : Dépendances
Aucune dépendance n'est nécessaire.
Étape 3 : Conception de la mise en page
***(a). `activity_main.xml``
Créez un fichier nommé activity_main.xml et concevez-le comme suit :
<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>
Étape 4 : Écrire le code
Ecrivez le code comme suit :
***(a). `MainActivity.java``
Créez un fichier nommé MainActivity.java.
Utilisez simplement la méthode get() et passez dans le contexte
AccountManager accountManager = AccountManager.get(this);
Ensuite, vous pouvez le mouler en chaîne de caractères et l'afficher :
Toast.makeText(this, "accountManager = " + accountManager.toString(), Toast.LENGTH_LONG).show(); // accountManagero.
Voici le code complet
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
}
}
Exécuter
Copiez simplement le code source dans votre projet Android, construisez et exécutez.
Exemple 3 : Obtenir AccountManager et le montrer
Ce tutoriel vous aidera à apprendre les concepts suivants :
- Comment obtenir l'AccountManager et le montrer dans un message
Toast.
Cet exemple comprendra les fichiers suivants :
MainActivity.java
Etape 1 : Créer le projet
- Ouvrez votre IDE
AndroidStudio. - Allez sur
File-->New-->Projectpour créer un nouveau projet.
Étape 2 : Ajouter les dépendances
Étape 3 : Conception de la mise en page
***(a). `activity_main.xml``
Créez un fichier nommé activity_main.xml et concevez-le comme suit :
<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>
Étape 4 : Écrire le code
Ecrivez le code comme suit :
***(a). `MainActivity.java``
Créer un fichier nommé MainActivity.java.
Importez AccountManager parmi d'autres importations :
import android.accounts.AccountManager;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
Créez une MainActivity
public class MainActivity extends Activity {
Remplacez le onCreate :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Invoquer le AccountManager.get(), en passant dans le contexte et le cast en string puis montrer dans un message Toast.
Toast.makeText(this, AccountManager.get(this).toString(), Toast.LENGTH_LONG).show(); // AccountManager.get(this)g[Xg.
Voici le code complet
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
}
}
Exécuter
Il suffit de copier le code source dans votre projet Android, de le construire et de l'exécuter.
Exemple 4 : Liste de tous les comptes
Cet exemple comprendra les fichiers suivants :
ListItem.javaListItemAdapter.javaMainActivity.java
Etape 1 : Créer le projet
- Ouvrez votre IDE
AndroidStudio. - Allez dans
File-->New-->Projectpour créer un nouveau projet.
Étape 2 : Dépendances
Aucune dépendance n'est nécessaire.
Étape 3 : Conception de la mise en page
***(a). `activity_main.xml``
Créez un fichier nommé activity_main.xml et concevez-le comme suit :
<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
Créez un fichier nommé list_item.xml et concevez-le comme suit :
<?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>
Étape 4 : Écrire le code
Ecrivez le code comme suit :
***(a). `ListItem.java``
Créer un fichier nommé ListItem.java.
Voici le code complet
package com.bgstation0.android.sample.accountmanager_;
// XgACeNXListItem
public class ListItem { // ListItem̒`.
public String name; // O.
}
***(b). `ListItemAdapter.java``
Créez un fichier nommé ListItemAdapter.java.
Voici le code complet
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
Créez un fichier nommé MainActivity.java.
Voici le code complet
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.
}
}
Exécuter
Copiez simplement le code source dans votre projet Android, construisez et exécutez.
Exemple 5 : Obtenir des comptes par type
Ce tutoriel vous aidera à apprendre les concepts suivants :
- Comment obtenir des comptes par type dans un appareil Android.
Cet exemple comprendra les fichiers suivants :
ListItem.javaListItemAdapter.javaMainActivity.java
Etape 1 : Créer le projet
- Ouvrez votre IDE
AndroidStudio. - Allez sur
File-->New-->Projectpour créer un nouveau projet.
Étape 2 : Ajouter les dépendances
Étape 3 : Conception de la mise en page
***(a). `activity_main.xml``
Créez un fichier nommé activity_main.xml et concevez-le comme suit :
<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
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 vous voulez obtenir des comptes, utilisez la méthode getAccounts().
//Account[] accounts = accountManager.getAccounts(); // accountManager.getAccounts()
Pour obtenir les comptes par type, utilisez la méthode getAccountsByType() comme indiqué ci-dessous :
Account[] accounts = accountManager.getAccountsByType("com.google");
Maintenant, bouclez à travers les comptes et ajoutez-les à notre liste.
for (Account account : accounts){
ListItem item = new ListItem();
item.name = account.name;
item.type = account.type;
list.add(item);
}
Préparez une ListView
ListView listView1 = (ListView)findViewById(R.id.listview1);
Liez les comptes à notre adaptateur, puis l'adaptateur à la ListView :
ListItem[] array = new ListItem[list.size()]; // array.
ListItemAdapter listItemAdapter = new ListItemAdapter(this, R.layout.list_item, list.toArray(array)); // arrayAdapter.
listView1.setAdapter(listItemAdapter);
Voici le code complet
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
}
}
Exécution
Il suffit de copier le code source dans votre projet Android, de le construire et de l'exécuter.