Skip to content

Commit 52179dd

Browse files
authored
fix(android): resolve ANR issue when calling getContacts
1 parent 79f77cc commit 52179dd

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

android/src/main/java/getcapacitor/community/contacts/ContactsPlugin.java

+30-14
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import com.getcapacitor.annotation.PermissionCallback;
1919
import java.util.HashMap;
2020
import java.util.Map;
21+
import java.util.concurrent.ExecutorService;
22+
import java.util.concurrent.Executors;
2123

2224
@CapacitorPlugin(
2325
name = "Contacts",
@@ -102,20 +104,34 @@ public void getContacts(PluginCall call) {
102104
if (!isContactsPermissionGranted()) {
103105
requestContactsPermission(call);
104106
} else {
105-
HashMap<String, ContactPayload> contacts = implementation.getContacts(
106-
new GetContactsProjectionInput(call.getObject("projection"))
107-
);
108-
109-
JSArray contactsJSArray = new JSArray();
110-
111-
for (Map.Entry<String, ContactPayload> entry : contacts.entrySet()) {
112-
ContactPayload value = entry.getValue();
113-
contactsJSArray.put(value.getJSObject());
114-
}
115-
116-
JSObject result = new JSObject();
117-
result.put("contacts", contactsJSArray);
118-
call.resolve(result);
107+
ExecutorService executor = Executors.newSingleThreadExecutor();
108+
109+
executor.execute(new Runnable() {
110+
@Override
111+
public void run() {
112+
HashMap<String, ContactPayload> contacts = implementation.getContacts(
113+
new GetContactsProjectionInput(call.getObject("projection"))
114+
);
115+
116+
JSArray contactsJSArray = new JSArray();
117+
for (Map.Entry<String, ContactPayload> entry : contacts.entrySet()) {
118+
ContactPayload value = entry.getValue();
119+
contactsJSArray.put(value.getJSObject());
120+
}
121+
122+
JSObject result = new JSObject();
123+
result.put("contacts", contactsJSArray);
124+
125+
bridge.getActivity().runOnUiThread(new Runnable() {
126+
@Override
127+
public void run() {
128+
call.resolve(result);
129+
}
130+
});
131+
}
132+
});
133+
134+
executor.shutdown();
119135
}
120136
}
121137

0 commit comments

Comments
 (0)