diff --git a/.gitignore b/.gitignore
index 41c1683..1247b75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
.DS_Store
.atom/
.idea
+.vscode
.packages
.dart_tool/
.pub/
diff --git a/android/build.gradle b/android/build.gradle
index 8fc020d..5b17ada 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -10,7 +10,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.3.3'
+ classpath 'com.android.tools.build:gradle:3.1.3'
}
}
@@ -26,12 +26,11 @@ rootProject.allprojects {
apply plugin: 'com.android.library'
android {
- compileSdkVersion 25
- buildToolsVersion '25.0.3'
+ compileSdkVersion 27
defaultConfig {
minSdkVersion 16
- targetSdkVersion 25
+ targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml
index 9910423..819906c 100644
--- a/android/src/main/AndroidManifest.xml
+++ b/android/src/main/AndroidManifest.xml
@@ -1,3 +1,6 @@
+ package="net.goderbauer.flutter.contactpicker">
+
+
+
diff --git a/android/src/main/java/net/goderbauer/flutter/contactpicker/ContactPickerPlugin.java b/android/src/main/java/net/goderbauer/flutter/contactpicker/ContactPickerPlugin.java
index 1c4c373..48b9577 100644
--- a/android/src/main/java/net/goderbauer/flutter/contactpicker/ContactPickerPlugin.java
+++ b/android/src/main/java/net/goderbauer/flutter/contactpicker/ContactPickerPlugin.java
@@ -10,12 +10,15 @@
import android.net.Uri;
import android.provider.ContactsContract;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
import io.flutter.plugin.common.MethodChannel.Result;
-import io.flutter.plugin.common.MethodCall;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.Registrar;
@@ -29,9 +32,9 @@ public static void registerWith(Registrar registrar) {
channel.setMethodCallHandler(instance);
}
- private ContactPickerPlugin(Activity activity) {
- this.activity = activity;
- }
+ private ContactPickerPlugin(Activity activity) {
+ this.activity = activity;
+ }
private static int PICK_CONTACT = 2015;
@@ -47,7 +50,7 @@ public void onMethodCall(MethodCall call, Result result) {
}
pendingResult = result;
- Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI);
+ Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
activity.startActivityForResult(i, PICK_CONTACT);
} else {
result.notImplemented();
@@ -59,31 +62,121 @@ public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode != PICK_CONTACT) {
return false;
}
- if (resultCode != RESULT_OK) {
+
+ if (resultCode != RESULT_OK || data.getData() == null) {
pendingResult.success(null);
pendingResult = null;
return true;
}
+
Uri contactUri = data.getData();
- Cursor cursor = activity.getContentResolver().query(contactUri, null, null, null, null);
- cursor.moveToFirst();
+ Cursor cursor = null;
+
+ try {
+ cursor = activity.getContentResolver()
+ .query(contactUri, null, null, null, null);
+
+ if (cursor == null || !cursor.moveToFirst()) {
+ pendingResult.success(null);
+ pendingResult = null;
+ return true;
+ }
+
+ long contactId = cursor.getLong(cursor.getColumnIndex(ContactsContract.Contacts._ID));
+
+ List