[Safer intents] Connectivity

To avoid implicit intents, make intents launch explicitly.

Bug: 323061508
Test: build
Change-Id: I44ff8a789d933f11ba7e68e52055575245276224
This commit is contained in:
Jason Chiu
2024-03-26 16:44:48 +08:00
parent 67bfb4141f
commit c53a73ef70
15 changed files with 32 additions and 9 deletions

View File

@@ -35,7 +35,8 @@
android:title="@string/mobile_network_list_add_more"
android:icon="@drawable/ic_menu_add_activated_tint"
android:order="100">
<intent android:action="android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION">
<intent android:action="android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION"
android:targetPackage="com.android.phone">
<extra android:name="android.telephony.euicc.extra.FORCE_PROVISION"
android:value="true"/>
</intent>

View File

@@ -140,6 +140,8 @@ public final class Utils extends com.android.settingslib.Utils {
public static final String SYSTEMUI_PACKAGE_NAME = "com.android.systemui";
public static final String PHONE_PACKAGE_NAME = "com.android.phone";
public static final String OS_PKG = "os";
/**

View File

@@ -70,7 +70,10 @@ object RequestPermissionHelper {
private fun Context.isDisallowBluetooth() =
if (userManager.hasUserRestriction(UserManager.DISALLOW_BLUETOOTH)) {
devicePolicyManager.createAdminSupportIntent(UserManager.DISALLOW_BLUETOOTH)
?.let { startActivity(it) }
?.let {
it.setPackage(packageName)
startActivity(it)
}
true
} else false

View File

@@ -34,6 +34,7 @@ import androidx.preference.TwoStatePreference;
import com.android.settings.AirplaneModeEnabler;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnDestroy;
@@ -84,7 +85,8 @@ public class AirplaneModePreferenceController extends TogglePreferenceController
// In ECM mode launch ECM app dialog
if (mFragment != null) {
mFragment.startActivityForResult(
new Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),
new Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null)
.setPackage(Utils.PHONE_PACKAGE_NAME),
REQUEST_CODE_EXIT_ECM);
}
return true;

View File

@@ -146,6 +146,7 @@ public class MobileNetworkSummaryController extends AbstractPreferenceController
private void startAddSimFlow() {
final Intent intent = new Intent(EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION);
intent.setPackage(com.android.settings.Utils.PHONE_PACKAGE_NAME);
intent.putExtra(EuiccManager.EXTRA_FORCE_PROVISION, true);
mContext.startActivity(intent);
}

View File

@@ -108,6 +108,7 @@ public class ApnPreferenceController extends TelephonyBasePreferenceController i
if (getPreferenceKey().equals(preference.getKey())) {
// This activity runs in phone process, we must use intent to start
final Intent intent = new Intent(Settings.ACTION_APN_SETTINGS);
intent.setPackage(mContext.getPackageName());
// This will setup the Home and Search affordance
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, true);
intent.putExtra(ApnSettings.SUB_ID, mSubId);

View File

@@ -75,6 +75,7 @@ class DataUsagePreferenceController(context: Context, key: String) :
override fun handlePreferenceTreeClick(preference: Preference): Boolean {
if (preference.key != preferenceKey || networkTemplate == null) return false
val intent = Intent(Settings.ACTION_MOBILE_DATA_USAGE).apply {
setPackage(mContext.packageName)
putExtra(Settings.EXTRA_NETWORK_TEMPLATE, networkTemplate)
putExtra(Settings.EXTRA_SUB_ID, mSubId)
}

View File

@@ -24,6 +24,8 @@ import android.text.TextUtils;
import androidx.preference.Preference;
import com.android.settings.Utils;
/**
* Preference controller for "Euicc preference"
*/
@@ -57,7 +59,8 @@ public class EuiccPreferenceController extends TelephonyBasePreferenceController
@Override
public boolean handlePreferenceTreeClick(Preference preference) {
if (TextUtils.equals(preference.getKey(), getPreferenceKey())) {
Intent intent = new Intent(EuiccManager.ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS);
Intent intent = new Intent(EuiccManager.ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS)
.setPackage(Utils.PHONE_PACKAGE_NAME);
mContext.startActivity(intent);
return true;
}

View File

@@ -43,6 +43,7 @@ import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.Settings.MobileNetworkActivity;
import com.android.settings.SettingsActivity;
import com.android.settings.Utils;
import com.android.settings.datausage.BillingCyclePreferenceController;
import com.android.settings.datausage.DataUsageSummaryPreferenceController;
import com.android.settings.network.CarrierWifiTogglePreferenceController;
@@ -133,7 +134,8 @@ public class MobileNetworkSettings extends AbstractMobileNetworkSettings impleme
|| TextUtils.equals(key, BUTTON_CDMA_SUBSCRIPTION_KEY)) {
if (mTelephonyManager.getEmergencyCallbackMode()) {
startActivityForResult(
new Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null),
new Intent(TelephonyManager.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null)
.setPackage(Utils.PHONE_PACKAGE_NAME),
REQUEST_CODE_EXIT_ECM);
mClickedPrefKey = key;
}

View File

@@ -96,7 +96,8 @@ public class SatelliteSettingPreferenceController extends
public boolean handlePreferenceTreeClick(@NonNull Preference preference) {
if (getPreferenceKey().equals(preference.getKey())) {
// This activity runs in phone process, we must use intent to start
final Intent intent = new Intent(Settings.ACTION_SATELLITE_SETTING);
final Intent intent = new Intent(Settings.ACTION_SATELLITE_SETTING)
.setPackage(mContext.getPackageName());
// This will setup the Home and Search affordance
intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, true);
intent.putExtra(SatelliteSetting.SUB_ID, mSubId);

View File

@@ -45,7 +45,8 @@ public class SpatialAudioSettings extends DashboardFragment {
footerPreference.setLearnMoreText(
getString(R.string.spatial_audio_footer_learn_more_text));
footerPreference.setLearnMoreAction(
view -> startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS)));
view -> startActivity(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS)
.setPackage(getContext().getPackageName())));
}
}

View File

@@ -55,7 +55,8 @@ public abstract class ProfileSettingsPreferenceFragment extends RestrictedDashbo
final UserHandle selectedUser = profileSpinnerAdapter.getUserHandle(position);
if (selectedUser.getIdentifier() != UserHandle.myUserId()) {
final Activity activity = getActivity();
Intent intent = new Intent(getIntentActionString());
Intent intent = new Intent(getIntentActionString())
.setPackage(getContext().getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
activity.startActivityAsUser(intent, selectedUser);

View File

@@ -31,6 +31,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.settings.R
import com.android.settings.Utils
import com.android.settings.network.SubscriptionUtil
import com.android.settings.network.telephony.MobileNetworkUtils
import com.android.settings.network.telephony.isSubscriptionEnabledFlow
@@ -104,6 +105,7 @@ private fun AddSim() {
private fun startAddSimFlow(context: Context) {
val intent = Intent(EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION)
intent.setPackage(Utils.PHONE_PACKAGE_NAME)
intent.putExtra(EuiccManager.EXTRA_FORCE_PROVISION, true)
context.startActivity(intent)
}

View File

@@ -114,7 +114,8 @@ public class WifiWakeupPreferenceController extends TogglePreferenceController i
throw new IllegalStateException("No fragment to start activity");
}
final Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
final Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
.setPackage(mContext.getPackageName());
mFragment.startActivityForResult(intent, WIFI_WAKEUP_REQUEST_CODE);
return false;
} else if (!getWifiScanningEnabled()) {

View File

@@ -75,6 +75,7 @@ public class WifiDppConfiguratorAuthActivity extends InstrumentedActivity {
Intent qrCodeIntent = new Intent();
qrCodeIntent.setAction(
WifiDppConfiguratorActivity.ACTION_CONFIGURATOR_QR_CODE_GENERATOR);
qrCodeIntent.setPackage(getPackageName());
qrCodeIntent.putExtras(getIntent());
startActivity(qrCodeIntent);
}