Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12095062 authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Fix selecting phone account dialog show error."

parents 816ad2b6 d109b5e7
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -16,9 +16,15 @@

package com.android.contacts.common.widget;

import android.os.Parcel;
import android.os.UserHandle;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import com.android.dialer.common.Assert;
import com.android.dialer.telecom.TelecomUtil;

import com.google.protobuf.ByteString;

import java.util.Collection;

/** Provides common operation on a {@link SelectPhoneAccountDialogOptions} */
@@ -27,9 +33,21 @@ public final class SelectPhoneAccountDialogOptionsUtil {

  public static PhoneAccountHandle getPhoneAccountHandle(
      SelectPhoneAccountDialogOptions.Entry entry) {
    UserHandle userHandle;
    Parcel parcel = Parcel.obtain();
    try {
      byte[] marshalledUserHandle = entry.getUserHandle().toByteArray();
      parcel.unmarshall(marshalledUserHandle, 0, marshalledUserHandle.length);
      parcel.setDataPosition(0);
      userHandle = parcel.readParcelable(UserHandle.class.getClassLoader());
    } catch (NullPointerException e) {
      userHandle = null;
    }
    parcel.recycle();
    return Assert.isNotNull(
        TelecomUtil.composePhoneAccountHandle(
            entry.getPhoneAccountHandleComponentName(), entry.getPhoneAccountHandleId()));
            entry.getPhoneAccountHandleComponentName(), entry.getPhoneAccountHandleId(),
                userHandle));
  }

  public static SelectPhoneAccountDialogOptions.Entry.Builder setPhoneAccountHandle(
@@ -38,6 +56,10 @@ public final class SelectPhoneAccountDialogOptionsUtil {
    entryBuilder.setPhoneAccountHandleComponentName(
        phoneAccountHandle.getComponentName().flattenToString());
    entryBuilder.setPhoneAccountHandleId(phoneAccountHandle.getId());
    Parcel parcel = Parcel.obtain();
    parcel.writeParcelable(phoneAccountHandle.getUserHandle(), 0);
    entryBuilder.setUserHandle(ByteString.copyFrom(parcel.marshall()));
    parcel.recycle();
    return entryBuilder;
  }

+2 −0
Original line number Diff line number Diff line
@@ -49,5 +49,7 @@ message SelectPhoneAccountDialogOptions {
    // in a call so the other SIM cannot be used. Hint should also be set to
    // inform the user why the account is unavailable.
    optional bool enabled = 4 [default = true];

    optional bytes user_handle = 5;
  }
}
 No newline at end of file
+14 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.UserHandle;
import android.provider.CallLog.Calls;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@@ -169,6 +170,14 @@ public abstract class TelecomUtil {
  @Nullable
  public static PhoneAccountHandle composePhoneAccountHandle(
      @Nullable String componentString, @Nullable String accountId) {
    return composePhoneAccountHandle(componentString, accountId, null);
  }

  /** Compose {@link PhoneAccountHandle} object from component name, account id and user handle. */
  @Nullable
  public static PhoneAccountHandle composePhoneAccountHandle(
          @Nullable String componentString, @Nullable String accountId,
          @Nullable UserHandle userHandle) {
    if (TextUtils.isEmpty(componentString) || TextUtils.isEmpty(accountId)) {
      return null;
    }
@@ -176,7 +185,11 @@ public abstract class TelecomUtil {
    if (componentName == null) {
      return null;
    }
    if (userHandle == null) {
      return new PhoneAccountHandle(componentName, accountId);
    } else {
      return new PhoneAccountHandle(componentName, accountId, userHandle);
    }
  }

  /**