570 lines
21 KiB
Java
570 lines
21 KiB
Java
package com.huawei.hms.common.internal;
|
|
|
|
import android.app.Activity;
|
|
import android.app.PendingIntent;
|
|
import android.content.ComponentName;
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.Handler;
|
|
import android.os.IBinder;
|
|
import android.os.Message;
|
|
import com.google.android.gms.internal.common.zzd;
|
|
import com.huawei.hms.adapter.AvailableAdapter;
|
|
import com.huawei.hms.adapter.BinderAdapter;
|
|
import com.huawei.hms.adapter.InnerBinderAdapter;
|
|
import com.huawei.hms.adapter.OuterBinderAdapter;
|
|
import com.huawei.hms.api.ConnectionResult;
|
|
import com.huawei.hms.api.FailedBinderCallBack;
|
|
import com.huawei.hms.api.HuaweiApiAvailability;
|
|
import com.huawei.hms.api.IPCTransport;
|
|
import com.huawei.hms.common.HuaweiApi;
|
|
import com.huawei.hms.core.aidl.IAIDLInvoke;
|
|
import com.huawei.hms.support.api.client.AidlApiClient;
|
|
import com.huawei.hms.support.api.client.SubAppInfo;
|
|
import com.huawei.hms.support.log.HMSLog;
|
|
import com.huawei.hms.utils.HMSPackageManager;
|
|
import com.huawei.hms.utils.PackageManagerHelper;
|
|
import com.huawei.hms.utils.Util;
|
|
import java.sql.Timestamp;
|
|
import java.util.List;
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public abstract class BaseHmsClient implements AidlApiClient {
|
|
protected static final int TIMEOUT_DISCONNECTED = 6;
|
|
private static final Object i = new Object();
|
|
private static final AtomicInteger j = new AtomicInteger(1);
|
|
private static final AtomicInteger k = new AtomicInteger(1);
|
|
private static BinderAdapter l;
|
|
private static BinderAdapter m;
|
|
private final Context a;
|
|
private String b;
|
|
private final ClientSettings c;
|
|
private volatile IAIDLInvoke d;
|
|
private final ConnectionCallbacks e;
|
|
private final OnConnectionFailedListener f;
|
|
private Handler g = null;
|
|
private HuaweiApi.RequestHandler h;
|
|
protected String sessionId;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* renamed from: com.huawei.hms.common.internal.BaseHmsClient$1, reason: invalid class name */
|
|
/* loaded from: classes2.dex */
|
|
public class AnonymousClass1 implements BinderAdapter.BinderCallBack {
|
|
final BaseHmsClient a;
|
|
|
|
AnonymousClass1(BaseHmsClient baseHmsClient) {
|
|
this.a = baseHmsClient;
|
|
}
|
|
|
|
@Override // com.huawei.hms.adapter.BinderAdapter.BinderCallBack
|
|
public void onBinderFailed(int i) {
|
|
onBinderFailed(i, null);
|
|
}
|
|
|
|
@Override // com.huawei.hms.adapter.BinderAdapter.BinderCallBack
|
|
public void onNullBinding(ComponentName componentName) {
|
|
this.a.b(1);
|
|
this.a.a(10);
|
|
}
|
|
|
|
@Override // com.huawei.hms.adapter.BinderAdapter.BinderCallBack
|
|
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
|
|
HMSLog.i("BaseHmsClient", "Enter onServiceConnected.");
|
|
this.a.connectedInternal(iBinder);
|
|
}
|
|
|
|
@Override // com.huawei.hms.adapter.BinderAdapter.BinderCallBack
|
|
public void onServiceDisconnected(ComponentName componentName) {
|
|
HMSLog.i("BaseHmsClient", "Enter onServiceDisconnected.");
|
|
this.a.b(1);
|
|
RequestManager.getHandler().sendEmptyMessage(RequestManager.NOTIFY_CONNECT_SUSPENDED);
|
|
if (this.a.e == null || (this.a.e instanceof HuaweiApi.RequestHandler)) {
|
|
return;
|
|
}
|
|
this.a.e.onConnectionSuspended(1);
|
|
}
|
|
|
|
@Override // com.huawei.hms.adapter.BinderAdapter.BinderCallBack
|
|
public void onTimedDisconnected() {
|
|
this.a.b(6);
|
|
if (this.a.e == null || (this.a.e instanceof HuaweiApi.RequestHandler)) {
|
|
return;
|
|
}
|
|
this.a.e.onConnectionSuspended(1);
|
|
}
|
|
|
|
@Override // com.huawei.hms.adapter.BinderAdapter.BinderCallBack
|
|
public void onBinderFailed(int i, Intent intent) {
|
|
if (intent != null) {
|
|
Activity activeActivity = Util.getActiveActivity(this.a.getClientSettings().getCpActivity(), this.a.getContext());
|
|
if (activeActivity != null) {
|
|
HMSLog.i("BaseHmsClient", "onBinderFailed: SDK try to resolve and reConnect!");
|
|
long time = new Timestamp(System.currentTimeMillis()).getTime();
|
|
FailedBinderCallBack.getInstance().setCallBack(Long.valueOf(time), new FailedBinderCallBack.BinderCallBack(this) { // from class: com.huawei.hms.common.internal.BaseHmsClient.1.1
|
|
final AnonymousClass1 a;
|
|
|
|
{
|
|
this.a = this;
|
|
}
|
|
|
|
@Override // com.huawei.hms.api.FailedBinderCallBack.BinderCallBack
|
|
public void binderCallBack(int i2) {
|
|
if (i2 != 0) {
|
|
this.a.a.a(new ConnectionResult(10, (PendingIntent) null));
|
|
this.a.a.d = null;
|
|
}
|
|
}
|
|
});
|
|
intent.putExtra(FailedBinderCallBack.CALLER_ID, time);
|
|
activeActivity.startActivity(intent);
|
|
return;
|
|
}
|
|
HMSLog.i("BaseHmsClient", "onBinderFailed: return pendingIntent to kit and cp");
|
|
this.a.a(new ConnectionResult(10, PendingIntent.getActivity(this.a.a, 11, intent, zzd.zza)));
|
|
this.a.d = null;
|
|
return;
|
|
}
|
|
HMSLog.i("BaseHmsClient", "onBinderFailed: intent is null!");
|
|
this.a.a(new ConnectionResult(10, (PendingIntent) null));
|
|
this.a.d = null;
|
|
}
|
|
}
|
|
|
|
/* loaded from: classes2.dex */
|
|
public interface ConnectionCallbacks {
|
|
public static final int CAUSE_API_CLIENT_EXPIRED = 3;
|
|
public static final int CAUSE_NETWORK_LOST = 2;
|
|
public static final int CAUSE_SERVICE_DISCONNECTED = 1;
|
|
|
|
void onConnected();
|
|
|
|
void onConnectionSuspended(int i);
|
|
}
|
|
|
|
/* loaded from: classes2.dex */
|
|
public interface OnConnectionFailedListener {
|
|
void onConnectionFailed(ConnectionResult connectionResult);
|
|
}
|
|
|
|
public BaseHmsClient(Context context, ClientSettings clientSettings, OnConnectionFailedListener onConnectionFailedListener, ConnectionCallbacks connectionCallbacks) {
|
|
this.a = context;
|
|
this.c = clientSettings;
|
|
if (clientSettings != null) {
|
|
this.b = clientSettings.getAppID();
|
|
}
|
|
this.f = onConnectionFailedListener;
|
|
this.e = connectionCallbacks;
|
|
}
|
|
|
|
private BinderAdapter.BinderCallBack d() {
|
|
return new AnonymousClass1(this);
|
|
}
|
|
|
|
private void e() {
|
|
HMSLog.w("BaseHmsClient", "Failed to get service as interface, trying to unbind.");
|
|
if (this.c.isUseInnerHms()) {
|
|
BinderAdapter binderAdapter = m;
|
|
if (binderAdapter == null) {
|
|
HMSLog.w("BaseHmsClient", "mInnerBinderAdapter is null.");
|
|
return;
|
|
}
|
|
binderAdapter.unBind();
|
|
} else {
|
|
BinderAdapter binderAdapter2 = l;
|
|
if (binderAdapter2 == null) {
|
|
HMSLog.w("BaseHmsClient", "mOuterBinderAdapter is null.");
|
|
return;
|
|
}
|
|
binderAdapter2.unBind();
|
|
}
|
|
b(1);
|
|
a(10);
|
|
}
|
|
|
|
private void f() {
|
|
if (this.c.isUseInnerHms()) {
|
|
BinderAdapter binderAdapter = m;
|
|
if (binderAdapter != null) {
|
|
binderAdapter.unBind();
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
BinderAdapter binderAdapter2 = l;
|
|
if (binderAdapter2 != null) {
|
|
binderAdapter2.unBind();
|
|
}
|
|
}
|
|
|
|
protected final void checkConnected() {
|
|
if (!isConnected()) {
|
|
throw new IllegalStateException("Not connected. Call connect() and wait for onConnected() to be called.");
|
|
}
|
|
}
|
|
|
|
public void connect(int i2) {
|
|
a(i2, false);
|
|
}
|
|
|
|
public void connectedInternal(IBinder iBinder) {
|
|
this.d = IAIDLInvoke.Stub.asInterface(iBinder);
|
|
if (this.d == null) {
|
|
HMSLog.e("BaseHmsClient", "mService is null, try to unBind.");
|
|
e();
|
|
} else {
|
|
onConnecting();
|
|
}
|
|
}
|
|
|
|
protected final void connectionConnected() {
|
|
b(3);
|
|
RequestManager.getHandler().sendEmptyMessage(RequestManager.NOTIFY_CONNECT_SUCCESS);
|
|
ConnectionCallbacks connectionCallbacks = this.e;
|
|
if (connectionCallbacks == null || (connectionCallbacks instanceof HuaweiApi.RequestHandler)) {
|
|
return;
|
|
}
|
|
connectionCallbacks.onConnected();
|
|
}
|
|
|
|
public void disconnect() {
|
|
int i2 = (this.c.isUseInnerHms() ? k : j).get();
|
|
HMSLog.i("BaseHmsClient", "Enter disconnect, Connection Status: ".concat(String.valueOf(i2)));
|
|
if (i2 == 3) {
|
|
f();
|
|
b(1);
|
|
} else if (i2 == 5) {
|
|
b();
|
|
b(1);
|
|
}
|
|
}
|
|
|
|
public BinderAdapter getAdapter() {
|
|
StringBuilder sb = new StringBuilder("getAdapter:isInner:");
|
|
sb.append(this.c.isUseInnerHms());
|
|
sb.append(", mInnerBinderAdapter:");
|
|
sb.append(m);
|
|
sb.append(", mOuterBinderAdapter:");
|
|
sb.append(l);
|
|
HMSLog.i("BaseHmsClient", sb.toString());
|
|
return this.c.isUseInnerHms() ? m : l;
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.AidlApiClient
|
|
public List<String> getApiNameList() {
|
|
return this.c.getApiName();
|
|
}
|
|
|
|
public int getConnectionStatus() {
|
|
return (this.c.isUseInnerHms() ? k : j).get();
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.ApiClient
|
|
public String getCpID() {
|
|
return this.c.getCpID();
|
|
}
|
|
|
|
@Deprecated
|
|
public int getMinApkVersion() {
|
|
return 30000000;
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.ApiClient
|
|
public String getPackageName() {
|
|
return this.c.getClientPackageName();
|
|
}
|
|
|
|
public int getRequestHmsVersionCode() {
|
|
return getMinApkVersion();
|
|
}
|
|
|
|
public String getServiceAction() {
|
|
HMSPackageManager hMSPackageManager = HMSPackageManager.getInstance(this.a);
|
|
if (this.c.isUseInnerHms()) {
|
|
return hMSPackageManager.getInnerServiceAction();
|
|
}
|
|
return hMSPackageManager.getServiceAction();
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.ApiClient
|
|
public SubAppInfo getSubAppInfo() {
|
|
return this.c.getSubAppID();
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.ApiClient
|
|
public String getTransportName() {
|
|
return IPCTransport.class.getName();
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.ApiClient
|
|
public boolean isConnected() {
|
|
return !this.c.isUseInnerHms() ? j.get() != 3 : k.get() != 3;
|
|
}
|
|
|
|
public boolean isConnecting() {
|
|
return (this.c.isUseInnerHms() ? k : j).get() == 5;
|
|
}
|
|
|
|
public void onConnecting() {
|
|
connectionConnected();
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public boolean c() {
|
|
return HMSPackageManager.getInstance(this.a).getHMSPackageStatesForMultiService() == PackageManagerHelper.PackageStates.ENABLED;
|
|
}
|
|
|
|
void b(int i2) {
|
|
if (this.c.isUseInnerHms()) {
|
|
k.set(i2);
|
|
} else {
|
|
j.set(i2);
|
|
}
|
|
}
|
|
|
|
public void connect(int i2, boolean z) {
|
|
a(i2, z);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public void a() {
|
|
String innerHmsPkg = this.c.getInnerHmsPkg();
|
|
String serviceAction = getServiceAction();
|
|
StringBuilder sb = new StringBuilder("enter bindCoreService, packageName is ");
|
|
sb.append(innerHmsPkg);
|
|
sb.append(", serviceAction is ");
|
|
sb.append(serviceAction);
|
|
HMSLog.i("BaseHmsClient", sb.toString());
|
|
a(innerHmsPkg, serviceAction);
|
|
}
|
|
|
|
private void b() {
|
|
synchronized (i) {
|
|
Handler handler = this.g;
|
|
if (handler != null) {
|
|
handler.removeMessages(2);
|
|
this.g = null;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void a(String str, String str2) {
|
|
if (this.c.isUseInnerHms()) {
|
|
m = InnerBinderAdapter.getInstance(this.a, str2, str);
|
|
if (isConnected()) {
|
|
HMSLog.i("BaseHmsClient", "The binder is already connected.");
|
|
getAdapter().updateDelayTask();
|
|
connectedInternal(getAdapter().getServiceBinder());
|
|
return;
|
|
} else {
|
|
b(5);
|
|
m.binder(d());
|
|
return;
|
|
}
|
|
}
|
|
l = OuterBinderAdapter.getInstance(this.a, str2, str);
|
|
if (isConnected()) {
|
|
HMSLog.i("BaseHmsClient", "The binder is already connected.");
|
|
getAdapter().updateDelayTask();
|
|
connectedInternal(getAdapter().getServiceBinder());
|
|
} else {
|
|
b(5);
|
|
l.binder(d());
|
|
}
|
|
}
|
|
|
|
private void b(AvailableAdapter availableAdapter, int i2) {
|
|
HMSLog.i("BaseHmsClient", "enter HmsCore resolution");
|
|
if (!getClientSettings().isHasActivity()) {
|
|
a(new ConnectionResult(26, HuaweiApiAvailability.getInstance().getErrPendingIntent(this.a, i2, 0)));
|
|
return;
|
|
}
|
|
Activity activeActivity = Util.getActiveActivity(getClientSettings().getCpActivity(), getContext());
|
|
if (activeActivity != null) {
|
|
availableAdapter.startResolution(activeActivity, new AvailableAdapter.AvailableCallBack(this) { // from class: com.huawei.hms.common.internal.BaseHmsClient.3
|
|
final BaseHmsClient a;
|
|
|
|
{
|
|
this.a = this;
|
|
}
|
|
|
|
@Override // com.huawei.hms.adapter.AvailableAdapter.AvailableCallBack
|
|
public void onComplete(int i3) {
|
|
if (i3 == 0 && this.a.c()) {
|
|
this.a.a();
|
|
} else {
|
|
this.a.a(i3);
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
a(26);
|
|
}
|
|
}
|
|
|
|
private void a(int i2, boolean z) {
|
|
int isHuaweiMobileServicesAvailable;
|
|
HMSLog.i("BaseHmsClient", "====== HMSSDK version: 61100302 ======");
|
|
int i3 = (this.c.isUseInnerHms() ? k : j).get();
|
|
HMSLog.i("BaseHmsClient", "Enter connect, Connection Status: ".concat(String.valueOf(i3)));
|
|
if (z || !(i3 == 3 || i3 == 5)) {
|
|
if (getMinApkVersion() > i2) {
|
|
i2 = getMinApkVersion();
|
|
}
|
|
StringBuilder sb = new StringBuilder("connect minVersion:");
|
|
sb.append(i2);
|
|
sb.append(" packageName:");
|
|
sb.append(this.c.getInnerHmsPkg());
|
|
HMSLog.i("BaseHmsClient", sb.toString());
|
|
if (this.a.getPackageName().equals(this.c.getInnerHmsPkg())) {
|
|
HMSLog.i("BaseHmsClient", "service packageName is same, bind core service return");
|
|
a();
|
|
return;
|
|
}
|
|
if (Util.isAvailableLibExist(this.a)) {
|
|
AvailableAdapter availableAdapter = new AvailableAdapter(i2);
|
|
isHuaweiMobileServicesAvailable = availableAdapter.isHuaweiMobileServicesAvailable(this.a);
|
|
HMSLog.i("BaseHmsClient", "check available result: ".concat(String.valueOf(isHuaweiMobileServicesAvailable)));
|
|
if (isHuaweiMobileServicesAvailable == 0) {
|
|
a();
|
|
return;
|
|
}
|
|
if (availableAdapter.isUserResolvableError(isHuaweiMobileServicesAvailable)) {
|
|
HMSLog.i("BaseHmsClient", "bindCoreService3.0 fail, start resolution now.");
|
|
b(availableAdapter, isHuaweiMobileServicesAvailable);
|
|
return;
|
|
} else if (availableAdapter.isUserNoticeError(isHuaweiMobileServicesAvailable)) {
|
|
HMSLog.i("BaseHmsClient", "bindCoreService3.0 fail, start notice now.");
|
|
a(availableAdapter, isHuaweiMobileServicesAvailable);
|
|
return;
|
|
} else {
|
|
StringBuilder sb2 = new StringBuilder("bindCoreService3.0 fail: ");
|
|
sb2.append(isHuaweiMobileServicesAvailable);
|
|
sb2.append(" is not resolvable.");
|
|
HMSLog.i("BaseHmsClient", sb2.toString());
|
|
}
|
|
} else {
|
|
isHuaweiMobileServicesAvailable = HuaweiApiAvailability.getInstance().isHuaweiMobileServicesAvailable(this.a, i2);
|
|
HMSLog.i("BaseHmsClient", "HuaweiApiAvailability check available result: ".concat(String.valueOf(isHuaweiMobileServicesAvailable)));
|
|
if (isHuaweiMobileServicesAvailable == 0) {
|
|
a();
|
|
return;
|
|
}
|
|
}
|
|
a(isHuaweiMobileServicesAvailable);
|
|
}
|
|
}
|
|
|
|
private void a(AvailableAdapter availableAdapter, int i2) {
|
|
HMSLog.i("BaseHmsClient", "enter notice");
|
|
if (!getClientSettings().isHasActivity()) {
|
|
if (i2 == 29) {
|
|
i2 = 9;
|
|
}
|
|
a(new ConnectionResult(26, HuaweiApiAvailability.getInstance().getErrPendingIntent(this.a, i2, 0)));
|
|
} else {
|
|
Activity activeActivity = Util.getActiveActivity(getClientSettings().getCpActivity(), getContext());
|
|
if (activeActivity != null) {
|
|
availableAdapter.startNotice(activeActivity, new AvailableAdapter.AvailableCallBack(this) { // from class: com.huawei.hms.common.internal.BaseHmsClient.2
|
|
final BaseHmsClient a;
|
|
|
|
{
|
|
this.a = this;
|
|
}
|
|
|
|
@Override // com.huawei.hms.adapter.AvailableAdapter.AvailableCallBack
|
|
public void onComplete(int i3) {
|
|
this.a.a(i3);
|
|
}
|
|
});
|
|
} else {
|
|
a(26);
|
|
}
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public void a(int i2) {
|
|
HMSLog.i("BaseHmsClient", "notifyFailed result: ".concat(String.valueOf(i2)));
|
|
Message message = new Message();
|
|
message.what = RequestManager.NOTIFY_CONNECT_FAILED;
|
|
message.obj = new ConnectionResultWrapper(this.h, new ConnectionResult(i2));
|
|
RequestManager.getHandler().sendMessage(message);
|
|
OnConnectionFailedListener onConnectionFailedListener = this.f;
|
|
if (onConnectionFailedListener == null || (onConnectionFailedListener instanceof HuaweiApi.RequestHandler)) {
|
|
return;
|
|
}
|
|
onConnectionFailedListener.onConnectionFailed(new ConnectionResult(i2));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public void a(ConnectionResult connectionResult) {
|
|
StringBuilder sb = new StringBuilder("notifyFailed result: ");
|
|
sb.append(connectionResult.getErrorCode());
|
|
HMSLog.i("BaseHmsClient", sb.toString());
|
|
Message message = new Message();
|
|
message.what = RequestManager.NOTIFY_CONNECT_FAILED;
|
|
HuaweiApi.RequestHandler requestHandler = this.h;
|
|
this.h = null;
|
|
message.obj = new ConnectionResultWrapper(requestHandler, connectionResult);
|
|
RequestManager.getHandler().sendMessage(message);
|
|
OnConnectionFailedListener onConnectionFailedListener = this.f;
|
|
if (onConnectionFailedListener == null || (onConnectionFailedListener instanceof HuaweiApi.RequestHandler)) {
|
|
return;
|
|
}
|
|
onConnectionFailedListener.onConnectionFailed(connectionResult);
|
|
}
|
|
|
|
public void setService(IAIDLInvoke iAIDLInvoke) {
|
|
this.d = iAIDLInvoke;
|
|
}
|
|
|
|
public final void setInternalRequest(HuaweiApi.RequestHandler requestHandler) {
|
|
this.h = requestHandler;
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.ApiClient
|
|
public String getSessionId() {
|
|
return this.sessionId;
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.AidlApiClient
|
|
public IAIDLInvoke getService() {
|
|
return this.d;
|
|
}
|
|
|
|
/* loaded from: classes2.dex */
|
|
public static final class ConnectionResultWrapper {
|
|
private HuaweiApi.RequestHandler a;
|
|
private ConnectionResult b;
|
|
|
|
public ConnectionResultWrapper(HuaweiApi.RequestHandler requestHandler, ConnectionResult connectionResult) {
|
|
this.a = requestHandler;
|
|
this.b = connectionResult;
|
|
}
|
|
|
|
public final HuaweiApi.RequestHandler getRequest() {
|
|
return this.a;
|
|
}
|
|
|
|
public final ConnectionResult getConnectionResult() {
|
|
return this.b;
|
|
}
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.ApiClient
|
|
public Context getContext() {
|
|
return this.a;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: protected */
|
|
public ClientSettings getClientSettings() {
|
|
return this.c;
|
|
}
|
|
|
|
@Override // com.huawei.hms.support.api.client.ApiClient
|
|
public String getAppID() {
|
|
return this.b;
|
|
}
|
|
}
|