Loading src/com/android/server/telecom/CallScreeningServiceHelper.java +13 −4 Original line number Diff line number Diff line Loading @@ -166,7 +166,8 @@ public class CallScreeningServiceHelper { } }; if (!bindCallScreeningService(mContext, mUserHandle, mPackageName, serviceConnection)) { if (!bindCallScreeningService(mContext, mUserHandle, mPackageName, serviceConnection, mFeatureFlags)) { Log.i(this, "bindAndGetCallIdentification - bind failed"); mFuture.complete(null); } Loading Loading @@ -203,7 +204,7 @@ public class CallScreeningServiceHelper { * @return {@code true} if binding succeeds, {@code false} otherwise. */ public static boolean bindCallScreeningService(Context context, UserHandle userHandle, String packageName, ServiceConnection serviceConnection) { String packageName, ServiceConnection serviceConnection, FeatureFlags flags) { if (TextUtils.isEmpty(packageName)) { Log.i(TAG, "PackageName is empty. Not performing call screening."); return false; Loading @@ -211,8 +212,16 @@ public class CallScreeningServiceHelper { Intent intent = new Intent(CallScreeningService.SERVICE_INTERFACE) .setPackage(packageName); List<ResolveInfo> entries = context.getPackageManager().queryIntentServicesAsUser( List<ResolveInfo> entries; if (flags.resolveHiddenDependenciesTwo()) { entries = UserUtil.getPackageManagerFromUserHandler(context, userHandle).queryIntentServicesAsUser(intent, 0, userHandle.getIdentifier()); } else { entries = context.getPackageManager().queryIntentServicesAsUser( intent, 0, userHandle.getIdentifier()); } if (entries.isEmpty()) { Log.i(TAG, packageName + " has no call screening service defined."); return false; Loading src/com/android/server/telecom/InCallController.java +31 −10 Original line number Diff line number Diff line Loading @@ -1380,7 +1380,12 @@ public class InCallController extends CallsManagerListenerBase implements int uid; try { if (mFeatureFlags.resolveHiddenDependenciesTwo()) { uid = UserUtil.getPackageManagerFromUserHandler(mContext, user).getPackageUidAsUser(pkg, user.getIdentifier()); } else { uid = pkgManager.getPackageUidAsUser(pkg, user.getIdentifier()); } } catch (PackageManager.NameNotFoundException e) { continue; } Loading Loading @@ -2444,11 +2449,19 @@ public class InCallController extends CallsManagerListenerBase implements PackageManager userPackageManager = userContext != null ? userContext.getPackageManager() : packageManager; for (ResolveInfo entry : packageManager.queryIntentServicesAsUser( List<ResolveInfo> entries; if (mFeatureFlags.resolveHiddenDependenciesTwo()) { entries = userPackageManager.queryIntentServicesAsUser( serviceIntent, PackageManager.GET_META_DATA | PackageManager.MATCH_DISABLED_COMPONENTS, userHandle.getIdentifier()); } else { entries = packageManager.queryIntentServicesAsUser( serviceIntent, PackageManager.GET_META_DATA | PackageManager.MATCH_DISABLED_COMPONENTS, userHandle.getIdentifier())) { userHandle.getIdentifier()); } for (ResolveInfo entry : entries) { ServiceInfo serviceInfo = entry.serviceInfo; if (serviceInfo != null) { Loading Loading @@ -3016,9 +3029,17 @@ public class InCallController extends CallsManagerListenerBase implements Intent intent = new Intent(InCallService.SERVICE_INTERFACE) .setPackage(ringingPackage); List<ResolveInfo> entries = mContext.getPackageManager().queryIntentServicesAsUser( List<ResolveInfo> entries; if (mFeatureFlags.resolveHiddenDependenciesTwo()) { entries = UserUtil.getPackageManagerFromUserHandler(mContext, userHandle).queryIntentServicesAsUser( intent, PackageManager.GET_META_DATA, userHandle.getIdentifier()); } else { entries = mContext.getPackageManager().queryIntentServicesAsUser( intent, PackageManager.GET_META_DATA, userHandle.getIdentifier()); } if (entries.isEmpty()) { Log.w(this, "doesConnectedDialerSupportRinging: couldn't find dialer's package info" + " <sad trombone>"); Loading src/com/android/server/telecom/PhoneAccountRegistrar.java +6 −1 Original line number Diff line number Diff line Loading @@ -801,7 +801,12 @@ public class PhoneAccountRegistrar { private List<ResolveInfo> resolveComponent(ComponentName componentName, UserHandle userHandle) { PackageManager pm = mContext.getPackageManager(); PackageManager pm; if (mTelecomFeatureFlags.resolveHiddenDependenciesTwo()) { pm = UserUtil.getPackageManagerFromUserHandler(mContext, userHandle); } else { pm = mContext.getPackageManager(); } Intent intent = new Intent(ConnectionService.SERVICE_INTERFACE); intent.setComponent(componentName); try { Loading src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java +18 −4 Original line number Diff line number Diff line Loading @@ -26,9 +26,11 @@ import android.os.UserHandle; import android.telecom.Log; import android.widget.Toast; import com.android.server.telecom.flags.FeatureFlags; import com.android.server.telecom.ui.ConfirmCallDialogActivity; import com.android.server.telecom.ui.DisconnectedCallNotifier; import java.util.ArrayList; import java.util.List; public final class TelecomBroadcastIntentProcessor { Loading Loading @@ -113,10 +115,15 @@ public final class TelecomBroadcastIntentProcessor { private final Context mContext; private final CallsManager mCallsManager; private final FeatureFlags mFeatureFlags; public TelecomBroadcastIntentProcessor(Context context, CallsManager callsManager) { public TelecomBroadcastIntentProcessor( Context context, CallsManager callsManager, FeatureFlags flags) { mContext = context; mCallsManager = callsManager; mFeatureFlags = flags; } public void processIntent(Intent intent) { Loading Loading @@ -287,9 +294,16 @@ public final class TelecomBroadcastIntentProcessor { private void sendSmsIntent(Intent intent, UserHandle userHandle) { Intent callIntent = new Intent(Intent.ACTION_SENDTO, intent.getData()); callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); List<ResolveInfo> activities; if (mFeatureFlags.resolveHiddenDependenciesTwo()) { activities = UserUtil.getPackageManagerFromUserHandler(mContext, userHandle).queryIntentActivitiesAsUser(callIntent, PackageManager.MATCH_DEFAULT_ONLY, userHandle.getIdentifier()); } else { PackageManager packageManager = mContext.getPackageManager(); List<ResolveInfo> activities = packageManager.queryIntentActivitiesAsUser( activities = packageManager.queryIntentActivitiesAsUser( callIntent, PackageManager.MATCH_DEFAULT_ONLY, userHandle.getIdentifier()); } if (activities.size() > 0) { mContext.startActivityAsUser(callIntent, userHandle); } else { Loading src/com/android/server/telecom/TelecomSystem.java +10 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.BugreportManager; Loading Loading @@ -320,8 +321,14 @@ public class TelecomSystem { @Override public List<ResolveInfo> queryIntentServicesAsUser( @NonNull Intent intent, int flags, int userId) { return mContext.getPackageManager().queryIntentServicesAsUser( intent, flags, userId); PackageManager pm; if (mFeatureFlags.resolveHiddenDependenciesTwo()) { pm = UserUtil.getPackageManagerFromUserHandler(mContext, UserHandle.of(userId)); } else { pm = mContext.getPackageManager(); } return pm.queryIntentServicesAsUser(intent, flags, userId); } @Override Loading Loading @@ -499,7 +506,7 @@ public class TelecomSystem { mCallIntentProcessor = new CallIntentProcessor(mContext, mCallsManager, defaultDialerCache, featureFlags); mTelecomBroadcastIntentProcessor = new TelecomBroadcastIntentProcessor( mContext, mCallsManager); mContext, mCallsManager, mFeatureFlags); // Register the receiver for the dialer secret codes, used to enable extended logging. mDialerCodeReceiver = new DialerCodeReceiver(mCallsManager); Loading Loading
src/com/android/server/telecom/CallScreeningServiceHelper.java +13 −4 Original line number Diff line number Diff line Loading @@ -166,7 +166,8 @@ public class CallScreeningServiceHelper { } }; if (!bindCallScreeningService(mContext, mUserHandle, mPackageName, serviceConnection)) { if (!bindCallScreeningService(mContext, mUserHandle, mPackageName, serviceConnection, mFeatureFlags)) { Log.i(this, "bindAndGetCallIdentification - bind failed"); mFuture.complete(null); } Loading Loading @@ -203,7 +204,7 @@ public class CallScreeningServiceHelper { * @return {@code true} if binding succeeds, {@code false} otherwise. */ public static boolean bindCallScreeningService(Context context, UserHandle userHandle, String packageName, ServiceConnection serviceConnection) { String packageName, ServiceConnection serviceConnection, FeatureFlags flags) { if (TextUtils.isEmpty(packageName)) { Log.i(TAG, "PackageName is empty. Not performing call screening."); return false; Loading @@ -211,8 +212,16 @@ public class CallScreeningServiceHelper { Intent intent = new Intent(CallScreeningService.SERVICE_INTERFACE) .setPackage(packageName); List<ResolveInfo> entries = context.getPackageManager().queryIntentServicesAsUser( List<ResolveInfo> entries; if (flags.resolveHiddenDependenciesTwo()) { entries = UserUtil.getPackageManagerFromUserHandler(context, userHandle).queryIntentServicesAsUser(intent, 0, userHandle.getIdentifier()); } else { entries = context.getPackageManager().queryIntentServicesAsUser( intent, 0, userHandle.getIdentifier()); } if (entries.isEmpty()) { Log.i(TAG, packageName + " has no call screening service defined."); return false; Loading
src/com/android/server/telecom/InCallController.java +31 −10 Original line number Diff line number Diff line Loading @@ -1380,7 +1380,12 @@ public class InCallController extends CallsManagerListenerBase implements int uid; try { if (mFeatureFlags.resolveHiddenDependenciesTwo()) { uid = UserUtil.getPackageManagerFromUserHandler(mContext, user).getPackageUidAsUser(pkg, user.getIdentifier()); } else { uid = pkgManager.getPackageUidAsUser(pkg, user.getIdentifier()); } } catch (PackageManager.NameNotFoundException e) { continue; } Loading Loading @@ -2444,11 +2449,19 @@ public class InCallController extends CallsManagerListenerBase implements PackageManager userPackageManager = userContext != null ? userContext.getPackageManager() : packageManager; for (ResolveInfo entry : packageManager.queryIntentServicesAsUser( List<ResolveInfo> entries; if (mFeatureFlags.resolveHiddenDependenciesTwo()) { entries = userPackageManager.queryIntentServicesAsUser( serviceIntent, PackageManager.GET_META_DATA | PackageManager.MATCH_DISABLED_COMPONENTS, userHandle.getIdentifier()); } else { entries = packageManager.queryIntentServicesAsUser( serviceIntent, PackageManager.GET_META_DATA | PackageManager.MATCH_DISABLED_COMPONENTS, userHandle.getIdentifier())) { userHandle.getIdentifier()); } for (ResolveInfo entry : entries) { ServiceInfo serviceInfo = entry.serviceInfo; if (serviceInfo != null) { Loading Loading @@ -3016,9 +3029,17 @@ public class InCallController extends CallsManagerListenerBase implements Intent intent = new Intent(InCallService.SERVICE_INTERFACE) .setPackage(ringingPackage); List<ResolveInfo> entries = mContext.getPackageManager().queryIntentServicesAsUser( List<ResolveInfo> entries; if (mFeatureFlags.resolveHiddenDependenciesTwo()) { entries = UserUtil.getPackageManagerFromUserHandler(mContext, userHandle).queryIntentServicesAsUser( intent, PackageManager.GET_META_DATA, userHandle.getIdentifier()); } else { entries = mContext.getPackageManager().queryIntentServicesAsUser( intent, PackageManager.GET_META_DATA, userHandle.getIdentifier()); } if (entries.isEmpty()) { Log.w(this, "doesConnectedDialerSupportRinging: couldn't find dialer's package info" + " <sad trombone>"); Loading
src/com/android/server/telecom/PhoneAccountRegistrar.java +6 −1 Original line number Diff line number Diff line Loading @@ -801,7 +801,12 @@ public class PhoneAccountRegistrar { private List<ResolveInfo> resolveComponent(ComponentName componentName, UserHandle userHandle) { PackageManager pm = mContext.getPackageManager(); PackageManager pm; if (mTelecomFeatureFlags.resolveHiddenDependenciesTwo()) { pm = UserUtil.getPackageManagerFromUserHandler(mContext, userHandle); } else { pm = mContext.getPackageManager(); } Intent intent = new Intent(ConnectionService.SERVICE_INTERFACE); intent.setComponent(componentName); try { Loading
src/com/android/server/telecom/TelecomBroadcastIntentProcessor.java +18 −4 Original line number Diff line number Diff line Loading @@ -26,9 +26,11 @@ import android.os.UserHandle; import android.telecom.Log; import android.widget.Toast; import com.android.server.telecom.flags.FeatureFlags; import com.android.server.telecom.ui.ConfirmCallDialogActivity; import com.android.server.telecom.ui.DisconnectedCallNotifier; import java.util.ArrayList; import java.util.List; public final class TelecomBroadcastIntentProcessor { Loading Loading @@ -113,10 +115,15 @@ public final class TelecomBroadcastIntentProcessor { private final Context mContext; private final CallsManager mCallsManager; private final FeatureFlags mFeatureFlags; public TelecomBroadcastIntentProcessor(Context context, CallsManager callsManager) { public TelecomBroadcastIntentProcessor( Context context, CallsManager callsManager, FeatureFlags flags) { mContext = context; mCallsManager = callsManager; mFeatureFlags = flags; } public void processIntent(Intent intent) { Loading Loading @@ -287,9 +294,16 @@ public final class TelecomBroadcastIntentProcessor { private void sendSmsIntent(Intent intent, UserHandle userHandle) { Intent callIntent = new Intent(Intent.ACTION_SENDTO, intent.getData()); callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); List<ResolveInfo> activities; if (mFeatureFlags.resolveHiddenDependenciesTwo()) { activities = UserUtil.getPackageManagerFromUserHandler(mContext, userHandle).queryIntentActivitiesAsUser(callIntent, PackageManager.MATCH_DEFAULT_ONLY, userHandle.getIdentifier()); } else { PackageManager packageManager = mContext.getPackageManager(); List<ResolveInfo> activities = packageManager.queryIntentActivitiesAsUser( activities = packageManager.queryIntentActivitiesAsUser( callIntent, PackageManager.MATCH_DEFAULT_ONLY, userHandle.getIdentifier()); } if (activities.size() > 0) { mContext.startActivityAsUser(callIntent, userHandle); } else { Loading
src/com/android/server/telecom/TelecomSystem.java +10 −3 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.BugreportManager; Loading Loading @@ -320,8 +321,14 @@ public class TelecomSystem { @Override public List<ResolveInfo> queryIntentServicesAsUser( @NonNull Intent intent, int flags, int userId) { return mContext.getPackageManager().queryIntentServicesAsUser( intent, flags, userId); PackageManager pm; if (mFeatureFlags.resolveHiddenDependenciesTwo()) { pm = UserUtil.getPackageManagerFromUserHandler(mContext, UserHandle.of(userId)); } else { pm = mContext.getPackageManager(); } return pm.queryIntentServicesAsUser(intent, flags, userId); } @Override Loading Loading @@ -499,7 +506,7 @@ public class TelecomSystem { mCallIntentProcessor = new CallIntentProcessor(mContext, mCallsManager, defaultDialerCache, featureFlags); mTelecomBroadcastIntentProcessor = new TelecomBroadcastIntentProcessor( mContext, mCallsManager); mContext, mCallsManager, mFeatureFlags); // Register the receiver for the dialer secret codes, used to enable extended logging. mDialerCodeReceiver = new DialerCodeReceiver(mCallsManager); Loading