what-the-bank/sources/com/huawei/hms/api/BindingFailedResolution.java

382 lines
14 KiB
Java
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.huawei.hms.api;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
import android.text.TextUtils;
import android.view.KeyEvent;
import com.huawei.hms.activity.BridgeActivity;
import com.huawei.hms.activity.IBridgeActivityDelegate;
import com.huawei.hms.api.FailedBinderCallBack;
import com.huawei.hms.common.internal.BindResolveClients;
import com.huawei.hms.support.log.HMSLog;
import com.huawei.hms.ui.AbstractDialog;
import com.huawei.hms.ui.AbstractPromptDialog;
import com.huawei.hms.utils.HMSPackageManager;
import com.huawei.hms.utils.ResourceLoaderUtil;
import com.huawei.hms.utils.UIUtil;
import com.huawei.hms.utils.Util;
/* loaded from: classes2.dex */
public class BindingFailedResolution implements IBridgeActivityDelegate, ServiceConnection {
private static final Object LOCK_CONNECT_TIMEOUT_HANDLER = new Object();
private static final int MSG_CONN_TIMEOUT = 2;
private static final int MSG_SELF_DESTROY_TIMEOUT = 3;
private static final int REQUEST_CODE = 2003;
private static final String TAG = "BindingFailedResolution";
private FailedBinderCallBack.BinderCallBack callBack;
private Activity curActivity;
private d promptdlg;
private boolean isStarting = true;
private Handler mConnectTimeoutHandler = null;
private Handler selfDestroyHandler = null;
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public class a implements Handler.Callback {
final BindingFailedResolution a;
a(BindingFailedResolution bindingFailedResolution) {
this.a = bindingFailedResolution;
}
@Override // android.os.Handler.Callback
public boolean handleMessage(Message message) {
if (message == null || message.what != 3) {
return false;
}
HMSLog.i(BindingFailedResolution.TAG, "selfDestroyHandleMSG_SELF_DESTROY_TIMEOUT");
this.a.noticeBindFailed();
this.a.finishBridgeActivity(8);
return true;
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public class b implements Handler.Callback {
final BindingFailedResolution a;
b(BindingFailedResolution bindingFailedResolution) {
this.a = bindingFailedResolution;
}
@Override // android.os.Handler.Callback
public boolean handleMessage(Message message) {
if (message == null || message.what != 2) {
return false;
}
HMSLog.e(BindingFailedResolution.TAG, "In connect, bind core try timeout");
this.a.fireStartResult(false);
return true;
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public class c implements AbstractDialog.Callback {
final BindingFailedResolution a;
c(BindingFailedResolution bindingFailedResolution) {
this.a = bindingFailedResolution;
}
@Override // com.huawei.hms.ui.AbstractDialog.Callback
public void onCancel(AbstractDialog abstractDialog) {
this.a.promptdlg = null;
BindResolveClients.getInstance().unRegisterAll();
this.a.finishBridgeActivity(8);
}
@Override // com.huawei.hms.ui.AbstractDialog.Callback
public void onDoWork(AbstractDialog abstractDialog) {
this.a.promptdlg = null;
BindResolveClients.getInstance().unRegisterAll();
this.a.finishBridgeActivity(8);
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* loaded from: classes2.dex */
public static class d extends AbstractPromptDialog {
private d() {
}
@Override // com.huawei.hms.ui.AbstractDialog
public String onGetMessageString(Context context) {
String appName = Util.getAppName(context, null);
String appName2 = Util.getAppName(context, HMSPackageManager.getInstance(context).getHMSPackageNameForMultiService());
Object[] objArr = new Object[2];
objArr[0] = appName;
if (TextUtils.isEmpty(appName2)) {
appName2 = "com.huawei.hwid";
}
objArr[1] = appName2;
return ResourceLoaderUtil.getString("hms_bindfaildlg_message", objArr);
}
@Override // com.huawei.hms.ui.AbstractDialog
public String onGetPositiveButtonString(Context context) {
return ResourceLoaderUtil.getString("hms_confirm");
}
/* synthetic */ d(a aVar) {
this();
}
}
private void bindCoreService(boolean z) {
Activity activity = getActivity();
if (activity == null) {
HMSLog.e(TAG, "In connect, bind core try fail");
fireStartResult(false);
noticeBindResult(z, 8);
return;
}
Intent intent = new Intent(HMSPackageManager.getInstance(activity.getApplicationContext()).getServiceAction());
try {
String hMSPackageNameForMultiService = HMSPackageManager.getInstance(activity.getApplicationContext()).getHMSPackageNameForMultiService();
if (TextUtils.isEmpty(hMSPackageNameForMultiService)) {
HMSLog.e(TAG, "servicePackageName is empty, Service is invalid.");
fireStartResult(false);
noticeBindResult(z, 1);
return;
}
intent.setPackage(hMSPackageNameForMultiService);
synchronized (LOCK_CONNECT_TIMEOUT_HANDLER) {
if (activity.bindService(intent, this, 1)) {
postConnDelayHandle();
return;
}
HMSLog.e(TAG, "In connect, bind core try fail");
fireStartResult(false);
noticeBindResult(z, 8);
}
} catch (IllegalArgumentException unused) {
HMSLog.e(TAG, "IllegalArgumentException when bindCoreService intent.setPackage");
fireStartResult(false);
noticeBindResult(z, 8);
}
}
private void cancelConnDelayHandle() {
synchronized (LOCK_CONNECT_TIMEOUT_HANDLER) {
Handler handler = this.mConnectTimeoutHandler;
if (handler != null) {
handler.removeMessages(2);
this.mConnectTimeoutHandler = null;
}
}
}
/* JADX INFO: Access modifiers changed from: private */
public void finishBridgeActivity(int i) {
Activity activity = getActivity();
if (activity == null || activity.isFinishing()) {
return;
}
HMSLog.i(TAG, "finishBridgeActivity".concat(String.valueOf(i)));
Intent intent = new Intent();
intent.putExtra(BridgeActivity.EXTRA_RESULT, i);
activity.setResult(-1, intent);
Util.unBindServiceCatchException(activity, this);
activity.finish();
}
private void showPromptdlg() {
Activity activity = getActivity();
if (activity == null || activity.isFinishing()) {
return;
}
d dVar = this.promptdlg;
if (dVar == null) {
this.promptdlg = new d(null);
} else {
dVar.dismiss();
}
HMSLog.i(TAG, "showPromptdlg to resolve conn error");
this.promptdlg.show(activity, new c(this));
}
private void tryStartHmsActivity(Activity activity) {
String hMSPackageNameForMultiService = HMSPackageManager.getInstance(activity.getApplicationContext()).getHMSPackageNameForMultiService();
if (TextUtils.isEmpty(hMSPackageNameForMultiService)) {
HMSLog.w(TAG, "servicePackageName is empty, Service is invalid.");
Handler handler = this.selfDestroyHandler;
if (handler != null) {
handler.removeMessages(3);
this.selfDestroyHandler = null;
}
bindCoreService(false);
return;
}
Intent intent = new Intent();
intent.putExtra("intent.extra.isfullscreen", UIUtil.isActivityFullscreen(activity));
intent.setClassName(hMSPackageNameForMultiService, HuaweiApiAvailability.ACTIVITY_NAME);
HMSLog.i(TAG, "onBridgeActivityCreatetry to start HMS");
try {
activity.startActivityForResult(intent, getRequestCode());
} catch (Throwable th) {
StringBuilder sb = new StringBuilder("ActivityNotFoundException");
sb.append(th.getMessage());
HMSLog.e(TAG, sb.toString());
Handler handler2 = this.selfDestroyHandler;
if (handler2 != null) {
handler2.removeMessages(3);
this.selfDestroyHandler = null;
}
bindCoreService(false);
}
}
@Override // com.huawei.hms.activity.IBridgeActivityDelegate
public int getRequestCode() {
return 2003;
}
@Override // com.huawei.hms.activity.IBridgeActivityDelegate
public void onBridgeActivityCreate(Activity activity) {
if (activity == null) {
HMSLog.e(TAG, "activity is null");
selfDestroyHandle();
return;
}
if (activity.isFinishing()) {
HMSLog.e(TAG, "activity is finishing");
return;
}
Intent intent = activity.getIntent();
if (intent != null && intent.hasExtra(FailedBinderCallBack.CALLER_ID)) {
long j = 0;
try {
j = intent.getLongExtra(FailedBinderCallBack.CALLER_ID, 0L);
} catch (Exception e) {
StringBuilder sb = new StringBuilder("getExtras for callId exception:");
sb.append(e.getMessage());
HMSLog.e(TAG, sb.toString());
}
this.callBack = FailedBinderCallBack.getInstance().getCallBack(Long.valueOf(j));
}
this.curActivity = activity;
BindingFailedResolveMgr.b.a(activity);
selfDestroyHandle();
tryStartHmsActivity(activity);
}
@Override // com.huawei.hms.activity.IBridgeActivityDelegate
public void onBridgeActivityDestroy() {
cancelConnDelayHandle();
BindingFailedResolveMgr.b.b(this.curActivity);
this.curActivity = null;
}
@Override // com.huawei.hms.activity.IBridgeActivityDelegate
public boolean onBridgeActivityResult(int i, int i2, Intent intent) {
if (i != getRequestCode()) {
return false;
}
HMSLog.i(TAG, "onBridgeActivityResult");
Handler handler = this.selfDestroyHandler;
if (handler != null) {
handler.removeMessages(3);
this.selfDestroyHandler = null;
}
bindCoreService(true);
return true;
}
@Override // com.huawei.hms.activity.IBridgeActivityDelegate
public void onKeyUp(int i, KeyEvent keyEvent) {
HMSLog.i(TAG, "On key up when resolve conn error");
}
@Override // android.content.ServiceConnection
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
cancelConnDelayHandle();
fireStartResult(true);
if (getActivity() == null) {
return;
}
HMSLog.i(TAG, "test connect success, try to reConnect and reply message");
BindResolveClients.getInstance().notifyClientReconnect();
}
@Override // android.content.ServiceConnection
public void onServiceDisconnected(ComponentName componentName) {
}
protected void onStartResult(boolean z) {
if (getActivity() == null) {
return;
}
if (z) {
finishBridgeActivity(0);
} else {
showPromptdlg();
}
}
/* JADX INFO: Access modifiers changed from: private */
public void noticeBindFailed() {
FailedBinderCallBack.BinderCallBack binderCallBack = this.callBack;
if (binderCallBack != null) {
binderCallBack.binderCallBack(8);
}
}
private void noticeBindResult(boolean z, int i) {
FailedBinderCallBack.BinderCallBack binderCallBack;
if (!z || (binderCallBack = this.callBack) == null) {
return;
}
binderCallBack.binderCallBack(i);
}
private void postConnDelayHandle() {
Handler handler = this.mConnectTimeoutHandler;
if (handler != null) {
handler.removeMessages(2);
} else {
this.mConnectTimeoutHandler = new Handler(Looper.getMainLooper(), new b(this));
}
this.mConnectTimeoutHandler.sendEmptyMessageDelayed(2, 5000L);
}
private void selfDestroyHandle() {
Handler handler = this.selfDestroyHandler;
if (handler != null) {
handler.removeMessages(3);
} else {
this.selfDestroyHandler = new Handler(Looper.getMainLooper(), new a(this));
}
this.selfDestroyHandler.sendEmptyMessageDelayed(3, 4000L);
}
/* JADX INFO: Access modifiers changed from: private */
public void fireStartResult(boolean z) {
if (this.isStarting) {
this.isStarting = false;
onStartResult(z);
}
}
@Override // com.huawei.hms.activity.IBridgeActivityDelegate
public void onBridgeConfigurationChanged() {
if (this.promptdlg == null) {
return;
}
HMSLog.i(TAG, "re show prompt dialog");
showPromptdlg();
}
protected Activity getActivity() {
return this.curActivity;
}
}