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

Commit d91eca20 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix selecting phone account dialog show error." am: 12095062 am:...

Merge "Fix selecting phone account dialog show error." am: 12095062 am: 603f062f am: b0406b16 am: ba8225ee am: 9a299811

Original change: https://android-review.googlesource.com/c/platform/packages/apps/Dialer/+/1428938

Change-Id: I5caddcc27100708a9cb30c921645485bf5d2e7f4
parents 3fe37942 9a299811
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);
    }
  }

  /**