Loading core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java +35 −18 Original line number Diff line number Diff line Loading @@ -76,22 +76,30 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser private IQuickAccessWalletService mService; @Nullable private final QuickAccessWalletServiceInfo mServiceInfo; private QuickAccessWalletServiceInfo mServiceInfo; private static final int MSG_TIMEOUT_SERVICE = 5; QuickAccessWalletClientImpl(@NonNull Context context, @Nullable Executor bgExecutor) { mContext = context.getApplicationContext(); mServiceInfo = QuickAccessWalletServiceInfo.tryCreate(context); mServiceInfo = null; mHandler = new Handler(Looper.getMainLooper()); mLifecycleExecutor = (bgExecutor == null) ? Runnable::run : bgExecutor; mRequestQueue = new ArrayDeque<>(); mEventListeners = new HashMap<>(1); } private QuickAccessWalletServiceInfo ensureServiceInfo() { if (mServiceInfo == null) { mServiceInfo = QuickAccessWalletServiceInfo.tryCreate(mContext); } return mServiceInfo; } @Override public boolean isWalletServiceAvailable() { return mServiceInfo != null; return ensureServiceInfo() != null; } @Override Loading Loading @@ -239,12 +247,13 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser @Override @Nullable public Intent createWalletIntent() { if (mServiceInfo == null) { QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); if (serviceInfo == null) { return null; } String packageName = mServiceInfo.getComponentName().getPackageName(); int userId = mServiceInfo.getUserId(); String walletActivity = mServiceInfo.getWalletActivity(); String packageName = serviceInfo.getComponentName().getPackageName(); int userId = serviceInfo.getUserId(); String walletActivity = serviceInfo.getWalletActivity(); return createIntent(walletActivity, packageName, userId, ACTION_VIEW_WALLET); } Loading Loading @@ -298,11 +307,12 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser @Override @Nullable public Intent createWalletSettingsIntent() { if (mServiceInfo == null) { QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); if (serviceInfo == null) { return null; } String packageName = mServiceInfo.getComponentName().getPackageName(); String settingsActivity = mServiceInfo.getSettingsActivity(); String packageName = serviceInfo.getComponentName().getPackageName(); String settingsActivity = serviceInfo.getSettingsActivity(); return createIntent(settingsActivity, packageName, UserHandle.myUserId(), ACTION_VIEW_WALLET_SETTINGS); } Loading Loading @@ -356,36 +366,42 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser @Override @Nullable public Drawable getLogo() { return mServiceInfo == null ? null : mServiceInfo.getWalletLogo(mContext); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getWalletLogo(mContext); } @Nullable @Override public Drawable getTileIcon() { return mServiceInfo == null ? null : mServiceInfo.getTileIcon(); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getTileIcon(); } @Nullable @Override public UserHandle getUser() { return mServiceInfo == null ? null : UserHandle.of(mServiceInfo.getUserId()); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : UserHandle.of(serviceInfo.getUserId()); } @Override @Nullable public CharSequence getServiceLabel() { return mServiceInfo == null ? null : mServiceInfo.getServiceLabel(mContext); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getServiceLabel(mContext); } @Override @Nullable public CharSequence getShortcutShortLabel() { return mServiceInfo == null ? null : mServiceInfo.getShortcutShortLabel(mContext); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getShortcutShortLabel(mContext); } @Override public CharSequence getShortcutLongLabel() { return mServiceInfo == null ? null : mServiceInfo.getShortcutLongLabel(mContext); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getShortcutLongLabel(mContext); } private void connect() { Loading @@ -393,7 +409,8 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser } private void connectInternal() { if (mServiceInfo == null) { QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); if (serviceInfo == null) { Log.w(TAG, "Wallet service unavailable"); return; } Loading @@ -402,7 +419,7 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser } mIsConnected = true; Intent intent = new Intent(SERVICE_INTERFACE); intent.setComponent(mServiceInfo.getComponentName()); intent.setComponent(serviceInfo.getComponentName()); int flags = Context.BIND_AUTO_CREATE | Context.BIND_WAIVE_PRIORITY; mLifecycleExecutor.execute(() -> mContext.bindService(intent, this, flags)); resetServiceConnectionTimeout(); Loading Loading
core/java/android/service/quickaccesswallet/QuickAccessWalletClientImpl.java +35 −18 Original line number Diff line number Diff line Loading @@ -76,22 +76,30 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser private IQuickAccessWalletService mService; @Nullable private final QuickAccessWalletServiceInfo mServiceInfo; private QuickAccessWalletServiceInfo mServiceInfo; private static final int MSG_TIMEOUT_SERVICE = 5; QuickAccessWalletClientImpl(@NonNull Context context, @Nullable Executor bgExecutor) { mContext = context.getApplicationContext(); mServiceInfo = QuickAccessWalletServiceInfo.tryCreate(context); mServiceInfo = null; mHandler = new Handler(Looper.getMainLooper()); mLifecycleExecutor = (bgExecutor == null) ? Runnable::run : bgExecutor; mRequestQueue = new ArrayDeque<>(); mEventListeners = new HashMap<>(1); } private QuickAccessWalletServiceInfo ensureServiceInfo() { if (mServiceInfo == null) { mServiceInfo = QuickAccessWalletServiceInfo.tryCreate(mContext); } return mServiceInfo; } @Override public boolean isWalletServiceAvailable() { return mServiceInfo != null; return ensureServiceInfo() != null; } @Override Loading Loading @@ -239,12 +247,13 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser @Override @Nullable public Intent createWalletIntent() { if (mServiceInfo == null) { QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); if (serviceInfo == null) { return null; } String packageName = mServiceInfo.getComponentName().getPackageName(); int userId = mServiceInfo.getUserId(); String walletActivity = mServiceInfo.getWalletActivity(); String packageName = serviceInfo.getComponentName().getPackageName(); int userId = serviceInfo.getUserId(); String walletActivity = serviceInfo.getWalletActivity(); return createIntent(walletActivity, packageName, userId, ACTION_VIEW_WALLET); } Loading Loading @@ -298,11 +307,12 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser @Override @Nullable public Intent createWalletSettingsIntent() { if (mServiceInfo == null) { QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); if (serviceInfo == null) { return null; } String packageName = mServiceInfo.getComponentName().getPackageName(); String settingsActivity = mServiceInfo.getSettingsActivity(); String packageName = serviceInfo.getComponentName().getPackageName(); String settingsActivity = serviceInfo.getSettingsActivity(); return createIntent(settingsActivity, packageName, UserHandle.myUserId(), ACTION_VIEW_WALLET_SETTINGS); } Loading Loading @@ -356,36 +366,42 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser @Override @Nullable public Drawable getLogo() { return mServiceInfo == null ? null : mServiceInfo.getWalletLogo(mContext); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getWalletLogo(mContext); } @Nullable @Override public Drawable getTileIcon() { return mServiceInfo == null ? null : mServiceInfo.getTileIcon(); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getTileIcon(); } @Nullable @Override public UserHandle getUser() { return mServiceInfo == null ? null : UserHandle.of(mServiceInfo.getUserId()); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : UserHandle.of(serviceInfo.getUserId()); } @Override @Nullable public CharSequence getServiceLabel() { return mServiceInfo == null ? null : mServiceInfo.getServiceLabel(mContext); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getServiceLabel(mContext); } @Override @Nullable public CharSequence getShortcutShortLabel() { return mServiceInfo == null ? null : mServiceInfo.getShortcutShortLabel(mContext); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getShortcutShortLabel(mContext); } @Override public CharSequence getShortcutLongLabel() { return mServiceInfo == null ? null : mServiceInfo.getShortcutLongLabel(mContext); QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); return serviceInfo == null ? null : serviceInfo.getShortcutLongLabel(mContext); } private void connect() { Loading @@ -393,7 +409,8 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser } private void connectInternal() { if (mServiceInfo == null) { QuickAccessWalletServiceInfo serviceInfo = ensureServiceInfo(); if (serviceInfo == null) { Log.w(TAG, "Wallet service unavailable"); return; } Loading @@ -402,7 +419,7 @@ public class QuickAccessWalletClientImpl implements QuickAccessWalletClient, Ser } mIsConnected = true; Intent intent = new Intent(SERVICE_INTERFACE); intent.setComponent(mServiceInfo.getComponentName()); intent.setComponent(serviceInfo.getComponentName()); int flags = Context.BIND_AUTO_CREATE | Context.BIND_WAIVE_PRIORITY; mLifecycleExecutor.execute(() -> mContext.bindService(intent, this, flags)); resetServiceConnectionTimeout(); Loading