diff options
| -rw-r--r-- | telecomm/java/android/telecom/DefaultDialerManager.java | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/telecomm/java/android/telecom/DefaultDialerManager.java b/telecomm/java/android/telecom/DefaultDialerManager.java index ef78ea5eb855..57ae5d3c05a0 100644 --- a/telecomm/java/android/telecom/DefaultDialerManager.java +++ b/telecomm/java/android/telecom/DefaultDialerManager.java @@ -29,11 +29,15 @@ import android.os.Binder; import android.os.Process; import android.os.UserHandle; import android.text.TextUtils; +import android.util.Slog; import com.android.internal.util.CollectionUtils; import java.util.ArrayList; import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; /** * Class for managing the default dialer application that will receive incoming calls, and be @@ -72,19 +76,15 @@ public class DefaultDialerManager { int user) { long identity = Binder.clearCallingIdentity(); try { + RoleManagerCallback.Future cb = new RoleManagerCallback.Future(); context.getSystemService(RoleManager.class).addRoleHolderAsUser( RoleManager.ROLE_DIALER, packageName, UserHandle.of(user), - AsyncTask.THREAD_POOL_EXECUTOR, new RoleManagerCallback() { - @Override - public void onSuccess() {} - - @Override - public void onFailure() { - Log.w(TAG, "Failed to set default dialer to %s for user %s", - packageName, user); - } - }); + AsyncTask.THREAD_POOL_EXECUTOR, cb); + cb.get(5, TimeUnit.SECONDS); return true; + } catch (InterruptedException | ExecutionException | TimeoutException e) { + Slog.e(TAG, "Failed to set default dialer to " + packageName + " for user " + user, e); + return false; } finally { Binder.restoreCallingIdentity(identity); } |