summaryrefslogtreecommitdiff
path: root/java/src
diff options
context:
space:
mode:
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java3
-rw-r--r--java/src/com/android/intentresolver/shortcuts/AppPredictorFactory.kt8
-rw-r--r--java/src/com/android/intentresolver/v2/ChooserActivity.java11
-rw-r--r--java/src/com/android/intentresolver/v2/ResolverActivity.java8
-rw-r--r--java/src/com/android/intentresolver/v2/platform/AppPredictionModule.kt45
5 files changed, 59 insertions, 16 deletions
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index b1c7d6fb..82e46a57 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -259,7 +259,8 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
new AppPredictorFactory(
this,
mChooserRequest.getSharedText(),
- mChooserRequest.getTargetIntentFilter()),
+ mChooserRequest.getTargetIntentFilter(),
+ getPackageManager().getAppPredictionServicePackageName() != null),
mChooserRequest.getTargetIntentFilter());
diff --git a/java/src/com/android/intentresolver/shortcuts/AppPredictorFactory.kt b/java/src/com/android/intentresolver/shortcuts/AppPredictorFactory.kt
index 82f40b91..e544e064 100644
--- a/java/src/com/android/intentresolver/shortcuts/AppPredictorFactory.kt
+++ b/java/src/com/android/intentresolver/shortcuts/AppPredictorFactory.kt
@@ -41,16 +41,14 @@ private const val SHARED_TEXT_KEY = "shared_text"
class AppPredictorFactory(
private val context: Context,
private val sharedText: String?,
- private val targetIntentFilter: IntentFilter?
+ private val targetIntentFilter: IntentFilter?,
+ private val appPredictionAvailable: Boolean,
) {
- private val mIsComponentAvailable =
- context.packageManager.appPredictionServicePackageName != null
-
/**
* Creates an AppPredictor instance for a profile or `null` if app predictor is not available.
*/
fun create(userHandle: UserHandle): AppPredictor? {
- if (!mIsComponentAvailable) return null
+ if (!appPredictionAvailable) return null
val contextAsUser = context.createContextAsUser(userHandle, 0 /* flags */)
val extras = Bundle().apply {
putParcelable(APP_PREDICTION_INTENT_FILTER_KEY, targetIntentFilter)
diff --git a/java/src/com/android/intentresolver/v2/ChooserActivity.java b/java/src/com/android/intentresolver/v2/ChooserActivity.java
index aa2b792a..f05a8ab3 100644
--- a/java/src/com/android/intentresolver/v2/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/v2/ChooserActivity.java
@@ -146,6 +146,7 @@ import com.android.intentresolver.v2.emptystate.NoAppsAvailableEmptyStateProvide
import com.android.intentresolver.v2.emptystate.NoCrossProfileEmptyStateProvider;
import com.android.intentresolver.v2.emptystate.NoCrossProfileEmptyStateProvider.DevicePolicyBlockerEmptyState;
import com.android.intentresolver.v2.emptystate.WorkProfilePausedEmptyStateProvider;
+import com.android.intentresolver.v2.platform.AppPredictionAvailable;
import com.android.intentresolver.v2.platform.ImageEditor;
import com.android.intentresolver.v2.platform.NearbyShare;
import com.android.intentresolver.v2.ui.ActionTitle;
@@ -222,7 +223,6 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
protected static final int PROFILE_PERSONAL = MultiProfilePagerAdapter.PROFILE_PERSONAL;
protected static final int PROFILE_WORK = MultiProfilePagerAdapter.PROFILE_WORK;
private boolean mRegistered;
- protected PackageManager mPm;
private PackageMonitor mPersonalPackageMonitor;
private PackageMonitor mWorkPackageMonitor;
protected View mProfileView;
@@ -263,11 +263,12 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
@Inject public FeatureFlags mFeatureFlags;
@Inject public EventLog mEventLog;
+ @Inject @AppPredictionAvailable public boolean mAppPredictionAvailable;
@Inject @ImageEditor public Optional<ComponentName> mImageEditor;
@Inject @NearbyShare public Optional<ComponentName> mNearbyShare;
@Inject public TargetDataLoader mTargetDataLoader;
-
@Inject public DevicePolicyResources mDevicePolicyResources;
+
private ChooserRefinementManager mRefinementManager;
private ChooserContentPreviewUi mChooserContentPreviewUi;
@@ -357,7 +358,8 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
new AppPredictorFactory(
this,
chooserRequest.getSharedText(),
- chooserRequest.getTargetIntentFilter()
+ chooserRequest.getTargetIntentFilter(),
+ mAppPredictionAvailable
),
chooserRequest.getTargetIntentFilter()
);
@@ -372,7 +374,6 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
return;
}
- mPm = getPackageManager();
mChooserMultiProfilePagerAdapter = createMultiProfilePagerAdapter(
requireNonNullElse(initialIntents, emptyList()).toArray(new Intent[0]),
/* resolutionList = */ null,
@@ -2175,7 +2176,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
return new ChooserListController(
this,
- mPm,
+ getPackageManager(),
mLogic.getTargetIntent(),
mLogic.getReferrerPackageName(),
requireAnnotatedUserHandles().userIdOfCallingApp,
diff --git a/java/src/com/android/intentresolver/v2/ResolverActivity.java b/java/src/com/android/intentresolver/v2/ResolverActivity.java
index bc3fb16b..9905cc2c 100644
--- a/java/src/com/android/intentresolver/v2/ResolverActivity.java
+++ b/java/src/com/android/intentresolver/v2/ResolverActivity.java
@@ -151,7 +151,6 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
private PickTargetOptionRequest mPickOptionRequest;
// Expected to be true if this object is ResolverActivity or is ResolverWrapperActivity.
protected ResolverDrawerLayout mResolverDrawerLayout;
- protected PackageManager mPm;
private static final String TAG = "ResolverActivity";
private static final boolean DEBUG = false;
@@ -257,7 +256,6 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
return;
}
- mPm = getPackageManager();
// The last argument of createResolverListAdapter is whether to do special handling
// of the last used choice to highlight it in the list. We need to always
@@ -755,7 +753,7 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
null);
return new ResolverListController(
this,
- mPm,
+ getPackageManager(),
mLogic.getTargetIntent(),
mLogic.getReferrerPackageName(),
requireAnnotatedUserHandles().userIdOfCallingApp,
@@ -1264,8 +1262,8 @@ public class ResolverActivity extends Hilt_ResolverActivity implements
if (ri != null) {
ActivityInfo activityInfo = ri.activityInfo;
- boolean hasRecordPermission =
- mPm.checkPermission(android.Manifest.permission.RECORD_AUDIO,
+ boolean hasRecordPermission = getPackageManager()
+ .checkPermission(android.Manifest.permission.RECORD_AUDIO,
activityInfo.packageName)
== PackageManager.PERMISSION_GRANTED;
diff --git a/java/src/com/android/intentresolver/v2/platform/AppPredictionModule.kt b/java/src/com/android/intentresolver/v2/platform/AppPredictionModule.kt
new file mode 100644
index 00000000..9ca9d871
--- /dev/null
+++ b/java/src/com/android/intentresolver/v2/platform/AppPredictionModule.kt
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.intentresolver.v2.platform
+
+import android.content.pm.PackageManager
+import dagger.Module
+import dagger.Provides
+import dagger.Reusable
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+import javax.inject.Qualifier
+import javax.inject.Singleton
+
+@Qualifier
+@MustBeDocumented
+@Retention(AnnotationRetention.RUNTIME)
+annotation class AppPredictionAvailable
+
+@Module
+@InstallIn(SingletonComponent::class)
+object AppPredictionModule {
+
+ /**
+ * Eventually replaced with: Optional<AppPredictionRepository>, etc.
+ */
+ @Provides
+ @Singleton
+ @AppPredictionAvailable
+ fun isAppPredictionAvailable(packageManager: PackageManager): Boolean {
+ return packageManager.appPredictionServicePackageName != null
+ }
+} \ No newline at end of file