Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

Android Code: Android Kontakte lesen und in eine ListView speichern
 
Hier finden Sie den Android Java Code und die zugehörigen xml Codes zum Lesen der Kontakte in einem Android Smartphone
Die Demo App besteht aus einer Liste und einem Button. Sobald man den Button klickt, werden die Kontakte des Android Smartphones gelesen und in die Liste zur Anzeige geladen.

 
In dem Debug Smartphone (Virtual Device) sind 3 Kontakte zur Demo eingestellt. Man sieht hier, dass Jeder einzelne Kontakt mehrere zugeordnete Phone-Nummern und mehrere Emails  und mehre Webseiten haben kann.

 
 
Als Video Tutorial zum Code

 
 
 
Hier der Java Code in der MainActivity.java
 
In der Klasse: Android_Contact werden die Daten zusammengefasst.
Die Methode: fp_get_Android_Contacts() liest die Kontakte des Android Smartphones ein und speichert diese in einer Liste aus Android_Contact
Danach wird die ArrayListe in der ListView dargestellt.
Wichtige Code-Stelle:
Mit dem Java Code: cursor_Android_Contacts = contentResolver.query(ContactsContract.Contacts.CONTENT_URI….) werden alle Kontakte aus der Android-Kontakt-Datenbank mit einer .query ausgelesen und in ein Recordset Cursor_Android_Contacts ausgegeben.
Anschliessende wirden die einzelnen Datensätze des Recordsets durchlaufen  

//=============================< Functions: Android.Contacts >=============================
public class Android_Contact {
//----------------< fritzbox_Contacts() >----------------
public String android_contact_Name = "";
public String android_contact_TelefonNr = "";
public int android_contact_ID=0;
//----------------</ fritzbox_Contacts() >----------------
}

public void fp_get_Android_Contacts() {
//----------------< fp_get_Android_Contacts() >----------------
ArrayList<Android_Contact> arrayList_Android_Contacts = new ArrayList<Android_Contact>();

//--< get all Contacts >--
Cursor cursor_Android_Contacts = null;
ContentResolver contentResolver = getContentResolver();
try {
cursor_Android_Contacts = contentResolver.query(ContactsContract.Contacts.
CONTENT_URI, null, null, null, null);
}
catch (Exception ex) {
Log.e(
"Error on contact", ex.getMessage());
}
//--</ get all Contacts >--

//----< Check: hasContacts >----
if (cursor_Android_Contacts.getCount() > 0) {
//----< has Contacts >----
//----< @Loop: all Contacts >----
while (cursor_Android_Contacts.moveToNext()) {
//< init >
Android_Contact android_contact = new Android_Contact();
String contact_id = cursor_Android_Contacts.getString(cursor_Android_Contacts.getColumnIndex(ContactsContract.Contacts.
_ID));
String contact_display_name = cursor_Android_Contacts.getString(cursor_Android_Contacts.getColumnIndex(ContactsContract.Contacts.
DISPLAY_NAME));
//</ init >

//----< set >----
android_contact.android_contact_Name = contact_display_name;


//----< get phone number >----
int hasPhoneNumber = Integer.parseInt(cursor_Android_Contacts.getString(cursor_Android_Contacts.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)));
if (hasPhoneNumber > 0) {

Cursor phoneCursor = contentResolver.query(
ContactsContract.CommonDataKinds.Phone.
CONTENT_URI
, null
, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?"
, new String[]{contact_id}
,
null);

while (phoneCursor.moveToNext()) {
String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.
NUMBER));
//< set >
android_contact.android_contact_TelefonNr = phoneNumber;
//</ set >
}
phoneCursor.close();
}
//----</ set >----
//----</ get phone number >----

// Add the contact to the ArrayList
arrayList_Android_Contacts.add(android_contact);
}
//----</ @Loop: all Contacts >----

//< show results >
Adapter_for_Android_Contacts adapter = new Adapter_for_Android_Contacts(this, arrayList_Android_Contacts);
listView_Android_Contacts.setAdapter(adapter);
//</ show results >


}
//----</ Check: hasContacts >----

// ----------------</ fp_get_Android_Contacts() >----------------
}

public class Adapter_for_Android_Contacts extends BaseAdapter {
//----------------< Adapter_for_Android_Contacts() >----------------
//< Variables >
Context mContext;
List<Android_Contact>
mList_Android_Contacts;
//</ Variables >

//< constructor with ListArray >
public Adapter_for_Android_Contacts(Context mContext, List<Android_Contact> mContact) {
this.mContext = mContext;
this.mList_Android_Contacts = mContact;
}
//</ constructor with ListArray >

@Override
public int getCount() {
return mList_Android_Contacts.size();
}

@Override
public Object getItem(int position) {
return mList_Android_Contacts.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

//----< show items >----
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view=View.inflate(
mContext,R.layout.contactlist_android_items,null);
//< get controls >
TextView textview_contact_Name= (TextView) view.findViewById(R.id.textview_android_contact_name);
TextView textview_contact_TelefonNr= (TextView) view.findViewById(R.id.
textview_android_contact_phoneNr);
//</ get controls >

//< show values >
textview_contact_Name.setText(mList_Android_Contacts.get(position).android_contact_Name);
textview_contact_TelefonNr.setText(
mList_Android_Contacts.get(position).android_contact_TelefonNr);
//</ show values >


view.setTag(mList_Android_Contacts.get(position).android_contact_Name);
return view;
}
//----</ show items >----
//----------------</ Adapter_for_Android_Contacts() >----------------
}
//=============================</ Functions: Android.Contacts >=============================
 

 
Unterseite-Fragment mit ListView
Folgende die XML Struktur des Fragments, in dem die ListView angezeigt wird.
Das Frament ist eine Unterseite oder Unterstruktur, die in die MainActivity zur Laufzeit geladen wird.

 
Fragement XML Code
Hier findet man den Button, der die Kontakte laden soll beim onClick-Event und die ListView, welche die Kontakte als Liste anzeigen soll

<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="layout.AContacts">

<!-- TODO: Update blank fragment layout -->
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Android Contacts.."
/>

<
Button
android:layout_width="157dp"
android:layout_height="wrap_content"
android:text="Load"
android:id="@+id/btnLoad_AndroidContacts"
android:onClick="btnLoad_AndroidContacts_onClick"


android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"/>


<
ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/btnLoad_AndroidContacts"
android:choiceMode="singleChoice"
android:id="@+id/listview_Android_Contacts"
/>

</
RelativeLayout>
 

 
Zeilenstruktur in der ListView
Die Zeilen der Liste werden durch die Datei contactlist_android_items.xml dargestellt und definiert.

 
Xml-Code der Zeilenstruktur in der ListView

<?xml version="1.0" encoding="utf-8"?>
<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"
>
<
TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Name"

android:textSize="22dp"
android:id="@+id/textview_android_contact_name">
</
TextView>

<
TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="TelefonNr"
android:id="@+id/textview_android_contact_phoneNr"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="29dp"
android:layout_marginStart="29dp"
android:layout_marginTop="31dp"/>

</
RelativeLayout>
 

 
Freigabe der Zugriffs-Erlaubnis auf Kontakte
In der Datei AndroidManifest.xml werden die Erlaubnisse eingetragen werden, damit die App die Kontakte lesen darf.
Wichtig ist die Zeile: <uses-permission android:name="android.permission.READ_CONTACTS" />

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.rue25.fritzbox">


<!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<
uses-permission android:name="android.permission.READ_CONTACTS" />
<
uses-permission android:name="android.permission.WRITE_CONTACTS" />

<!--/ Permissions -->

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"

>
<
activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<
intent-filter>
<
action android:name="android.intent.action.MAIN"/>

<
category android:name="android.intent.category.LAUNCHER"/>
</
intent-filter>
</
activity><!-- ATTENTION: This was auto-generated to add Google Play services to your project for
App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information. -->
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
</
application>

</
manifest>
 

 
Mobile
»
App Settings als App Preferences speichern und lesen
»
Android Settings zu einem App Project zufügen
»
Android Code: Kontakte anfügen mit Person, Email, Telefon mit Batch Operationen
»
Android Studio: Kontakt anfügen mit Hilfe von Android Intent
»
Android Code: Automatisch eine Telefon-Nummer wählen
»
Android App Code: Start Stop von Wlan mit Java Code
»
Android App Code: App soll Wifi anschalten, Intent
»
Android: StartActivity und Intent wie Makros für Apps
»
Android Code: Android Kontakte lesen und in eine ListView speichern
»
Android Java: Angepasste ListView mit eigenem Adapter

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de