From 5a64bd90cce16f62188c260ff45fb4e3fca456e5 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 10 Apr 2018 13:38:26 +0100 Subject: [PATCH] Fix adding members on some devices. Networking is not allowed on the main thread, and on some devices with strict mode on, even the creation of the http handler is enough to trigger an exception (i.e even if not used from the thread). This moves even the creation to a thread which fixes the issue. --- .../com/etesync/syncadapter/ui/AddMemberFragment.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/etesync/syncadapter/ui/AddMemberFragment.java b/app/src/main/java/com/etesync/syncadapter/ui/AddMemberFragment.java index f2532de5..053ea307 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/AddMemberFragment.java +++ b/app/src/main/java/com/etesync/syncadapter/ui/AddMemberFragment.java @@ -3,6 +3,7 @@ package com.etesync.syncadapter.ui; import android.accounts.Account; import android.app.Dialog; import android.app.ProgressDialog; +import android.content.Context; import android.content.DialogInterface; import android.os.AsyncTask; import android.os.Bundle; @@ -30,7 +31,7 @@ public class AddMemberFragment extends DialogFragment { final static private String KEY_MEMBER = "memberEmail"; private Account account; private AccountSettings settings; - private OkHttpClient httpClient; + private Context ctx; private HttpUrl remote; private CollectionInfo info; private String memberEmail; @@ -52,9 +53,9 @@ public class AddMemberFragment extends DialogFragment { account = getArguments().getParcelable(Constants.KEY_ACCOUNT); info = (CollectionInfo) getArguments().getSerializable(Constants.KEY_COLLECTION_INFO); memberEmail = getArguments().getString(KEY_MEMBER); + ctx = getContext(); try { - settings = new AccountSettings(getContext(), account); - httpClient = HttpClient.create(getContext(), settings); + settings = new AccountSettings(ctx, account); } catch (InvalidAccountException e) { e.printStackTrace(); } @@ -79,6 +80,7 @@ public class AddMemberFragment extends DialogFragment { @Override protected AddResult doInBackground(Void... voids) { try { + OkHttpClient httpClient = HttpClient.create(ctx, settings); UserInfoManager userInfoManager = new UserInfoManager(httpClient, remote); UserInfoManager.UserInfo userInfo = userInfoManager.get(memberEmail); @@ -143,6 +145,7 @@ public class AddMemberFragment extends DialogFragment { @Override protected AddResultSecond doInBackground(Void... voids) { try { + OkHttpClient httpClient = HttpClient.create(ctx, settings); JournalManager journalsManager = new JournalManager(httpClient, remote); JournalManager.Journal journal = JournalManager.Journal.fakeWithUid(info.uid);