Merge "Whitelist fragments appropriate for an activity"

This commit is contained in:
Amith Yamasani
2013-08-01 17:18:39 +00:00
committed by Android (Google) Code Review
12 changed files with 153 additions and 1 deletions

View File

@@ -823,7 +823,6 @@
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.LOCATION_SOURCE_SETTINGS" /> <action android:name="android.settings.LOCATION_SOURCE_SETTINGS" />
<action android:name="android.credentials.UNLOCK" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.VOICE_LAUNCH" /> <category android:name="android.intent.category.VOICE_LAUNCH" />
<category android:name="com.android.settings.SHORTCUT" /> <category android:name="com.android.settings.SHORTCUT" />

View File

@@ -17,6 +17,7 @@
package com.android.settings; package com.android.settings;
import android.app.Activity; import android.app.Activity;
import android.app.Fragment;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.content.Context; import android.content.Context;
@@ -35,6 +36,7 @@ import android.view.ViewGroup;
import android.widget.ListView; import android.widget.ListView;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.settings.ConfirmLockPattern.ConfirmLockPatternFragment;
import java.util.List; import java.util.List;
@@ -50,6 +52,12 @@ public class ChooseLockGeneric extends PreferenceActivity {
return modIntent; return modIntent;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
if (ChooseLockGenericFragment.class.getName().equals(fragmentName)) return true;
return false;
}
public static class ChooseLockGenericFragment extends SettingsPreferenceFragment { public static class ChooseLockGenericFragment extends SettingsPreferenceFragment {
private static final int MIN_PASSWORD_LENGTH = 4; private static final int MIN_PASSWORD_LENGTH = 4;
private static final String KEY_UNLOCK_BACKUP_INFO = "unlock_backup_info"; private static final String KEY_UNLOCK_BACKUP_INFO = "unlock_backup_info";

View File

@@ -19,6 +19,7 @@ package com.android.settings;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.PasswordEntryKeyboardHelper; import com.android.internal.widget.PasswordEntryKeyboardHelper;
import com.android.internal.widget.PasswordEntryKeyboardView; import com.android.internal.widget.PasswordEntryKeyboardView;
import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
import android.app.Activity; import android.app.Activity;
import android.app.Fragment; import android.app.Fragment;
@@ -64,6 +65,12 @@ public class ChooseLockPassword extends PreferenceActivity {
return modIntent; return modIntent;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
if (ChooseLockPasswordFragment.class.getName().equals(fragmentName)) return true;
return false;
}
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
// TODO: Fix on phones // TODO: Fix on phones

View File

@@ -22,6 +22,7 @@ import com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.LockPatternView; import com.android.internal.widget.LockPatternView;
import com.android.internal.widget.LockPatternView.Cell; import com.android.internal.widget.LockPatternView.Cell;
import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
import static com.android.internal.widget.LockPatternView.DisplayMode; import static com.android.internal.widget.LockPatternView.DisplayMode;
@@ -68,6 +69,12 @@ public class ChooseLockPattern extends PreferenceActivity {
return modIntent; return modIntent;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
if (ChooseLockPatternFragment.class.getName().equals(fragmentName)) return true;
return false;
}
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
// requestWindowFeature(Window.FEATURE_NO_TITLE); // requestWindowFeature(Window.FEATURE_NO_TITLE);

View File

@@ -19,6 +19,7 @@ package com.android.settings;
import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils;
import com.android.internal.widget.PasswordEntryKeyboardHelper; import com.android.internal.widget.PasswordEntryKeyboardHelper;
import com.android.internal.widget.PasswordEntryKeyboardView; import com.android.internal.widget.PasswordEntryKeyboardView;
import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
import android.app.Activity; import android.app.Activity;
import android.app.Fragment; import android.app.Fragment;
@@ -51,6 +52,12 @@ public class ConfirmLockPassword extends PreferenceActivity {
return modIntent; return modIntent;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
if (ConfirmLockPasswordFragment.class.getName().equals(fragmentName)) return true;
return false;
}
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
// Disable IME on our window since we provide our own keyboard // Disable IME on our window since we provide our own keyboard

View File

@@ -76,6 +76,12 @@ public class ConfirmLockPattern extends PreferenceActivity {
return modIntent; return modIntent;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
if (ConfirmLockPatternFragment.class.getName().equals(fragmentName)) return true;
return false;
}
public static class ConfirmLockPatternFragment extends Fragment { public static class ConfirmLockPatternFragment extends Fragment {
// how long we wait to clear a wrong pattern // how long we wait to clear a wrong pattern

View File

@@ -19,6 +19,7 @@ package com.android.settings;
import android.accounts.Account; import android.accounts.Account;
import android.accounts.AccountManager; import android.accounts.AccountManager;
import android.accounts.OnAccountsUpdateListener; import android.accounts.OnAccountsUpdateListener;
import android.app.Fragment;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
@@ -53,13 +54,31 @@ import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import com.android.settings.accessibility.AccessibilitySettings;
import com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment; import com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment;
import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
import com.android.settings.ChooseLockPassword.ChooseLockPasswordFragment;
import com.android.settings.ChooseLockPattern.ChooseLockPatternFragment;
import com.android.settings.accounts.AccountSyncSettings; import com.android.settings.accounts.AccountSyncSettings;
import com.android.settings.accounts.AuthenticatorHelper; import com.android.settings.accounts.AuthenticatorHelper;
import com.android.settings.accounts.ManageAccountsSettings; import com.android.settings.accounts.ManageAccountsSettings;
import com.android.settings.applications.AppOpsSummary;
import com.android.settings.applications.ManageApplications;
import com.android.settings.bluetooth.BluetoothEnabler; import com.android.settings.bluetooth.BluetoothEnabler;
import com.android.settings.bluetooth.BluetoothSettings; import com.android.settings.bluetooth.BluetoothSettings;
import com.android.settings.deviceinfo.Memory;
import com.android.settings.deviceinfo.UsbSettings;
import com.android.settings.fuelgauge.PowerUsageSummary;
import com.android.settings.inputmethod.InputMethodAndLanguageSettings;
import com.android.settings.inputmethod.SpellCheckersSettings;
import com.android.settings.inputmethod.UserDictionaryList;
import com.android.settings.nfc.AndroidBeam;
import com.android.settings.tts.TextToSpeechSettings;
import com.android.settings.users.AppRestrictionsFragment;
import com.android.settings.users.UserSettings;
import com.android.settings.vpn2.VpnSettings;
import com.android.settings.wfd.WifiDisplaySettings; import com.android.settings.wfd.WifiDisplaySettings;
import com.android.settings.wifi.AdvancedWifiSettings;
import com.android.settings.wifi.WifiEnabler; import com.android.settings.wifi.WifiEnabler;
import com.android.settings.wifi.WifiSettings; import com.android.settings.wifi.WifiSettings;
import com.android.settings.wifi.p2p.WifiP2pSettings; import com.android.settings.wifi.p2p.WifiP2pSettings;
@@ -267,6 +286,56 @@ public class Settings extends PreferenceActivity
} }
} }
private static final String[] ENTRY_FRAGMENTS = {
WirelessSettings.class.getName(),
WifiSettings.class.getName(),
AdvancedWifiSettings.class.getName(),
BluetoothSettings.class.getName(),
TetherSettings.class.getName(),
WifiP2pSettings.class.getName(),
VpnSettings.class.getName(),
DateTimeSettings.class.getName(),
LocalePicker.class.getName(),
InputMethodAndLanguageSettings.class.getName(),
SpellCheckersSettings.class.getName(),
UserDictionaryList.class.getName(),
UserDictionarySettings.class.getName(),
SoundSettings.class.getName(),
DisplaySettings.class.getName(),
DeviceInfoSettings.class.getName(),
ManageApplications.class.getName(),
NotificationStation.class.getName(),
AppOpsSummary.class.getName(),
LocationSettings.class.getName(),
SecuritySettings.class.getName(),
PrivacySettings.class.getName(),
DeviceAdminSettings.class.getName(),
AccessibilitySettings.class.getName(),
TextToSpeechSettings.class.getName(),
Memory.class.getName(),
DevelopmentSettings.class.getName(),
UsbSettings.class.getName(),
AndroidBeam.class.getName(),
WifiDisplaySettings.class.getName(),
PowerUsageSummary.class.getName(),
AccountSyncSettings.class.getName(),
CryptKeeperSettings.class.getName(),
DataUsageSummary.class.getName(),
DreamSettings.class.getName(),
UserSettings.class.getName(),
NotificationAccessSettings.class.getName(),
};
@Override
protected boolean isValidFragment(String fragmentName) {
// Almost all fragments are wrapped in this,
// except for a few that have their own activities.
for (int i = 0; i < ENTRY_FRAGMENTS.length; i++) {
if (ENTRY_FRAGMENTS[i].equals(fragmentName)) return true;
}
return false;
}
private void switchToHeaderLocal(Header header) { private void switchToHeaderLocal(Header header) {
mInLocalHeaderSwitch = true; mInLocalHeaderSwitch = true;
switchToHeader(header); switchToHeader(header);
@@ -877,4 +946,5 @@ public class Settings extends PreferenceActivity
public static class NotificationStationActivity extends Settings { /* empty */ } public static class NotificationStationActivity extends Settings { /* empty */ }
public static class UserSettingsActivity extends Settings { /* empty */ } public static class UserSettingsActivity extends Settings { /* empty */ }
public static class NotificationAccessSettingsActivity extends Settings { /* empty */ } public static class NotificationAccessSettingsActivity extends Settings { /* empty */ }
public static class UsbSettingsActivity extends Settings { /* empty */ }
} }

View File

@@ -16,6 +16,11 @@
package com.android.settings; package com.android.settings;
import android.app.Fragment;
import android.util.Log;
import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
/** /**
* Stub class for showing sub-settings; we can't use the main Settings class * Stub class for showing sub-settings; we can't use the main Settings class
* since for our app it is a special singleTask class. * since for our app it is a special singleTask class.
@@ -27,4 +32,10 @@ public class SubSettings extends Settings {
finish(); finish();
return true; return true;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
Log.d("SubSettings", "Launching fragment " + fragmentName);
return true;
}
} }

View File

@@ -16,9 +16,12 @@
package com.android.settings.accounts; package com.android.settings.accounts;
import android.app.Fragment;
import android.content.Intent; import android.content.Intent;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
/** /**
* Launcher activity for the SyncSettings fragment. * Launcher activity for the SyncSettings fragment.
* *
@@ -31,4 +34,10 @@ public class SyncSettingsActivity extends PreferenceActivity {
modIntent.putExtra(EXTRA_NO_HEADERS, true); modIntent.putExtra(EXTRA_NO_HEADERS, true);
return modIntent; return modIntent;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
if (SyncSettings.class.getName().equals(fragmentName)) return true;
return false;
}
} }

View File

@@ -1,9 +1,13 @@
package com.android.settings.applications; package com.android.settings.applications;
import android.app.Fragment;
import android.content.Intent; import android.content.Intent;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
public class InstalledAppDetailsTop extends PreferenceActivity { public class InstalledAppDetailsTop extends PreferenceActivity {
@Override @Override
public Intent getIntent() { public Intent getIntent() {
Intent modIntent = new Intent(super.getIntent()); Intent modIntent = new Intent(super.getIntent());
@@ -11,4 +15,11 @@ public class InstalledAppDetailsTop extends PreferenceActivity {
modIntent.putExtra(EXTRA_NO_HEADERS, true); modIntent.putExtra(EXTRA_NO_HEADERS, true);
return modIntent; return modIntent;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
if (InstalledAppDetails.class.getName().equals(fragmentName)) return true;
return false;
}
} }

View File

@@ -15,9 +15,12 @@
*/ */
package com.android.settings.inputmethod; package com.android.settings.inputmethod;
import android.app.Fragment;
import android.content.Intent; import android.content.Intent;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import com.android.settings.ChooseLockPassword.ChooseLockPasswordFragment;
public class InputMethodAndSubtypeEnablerActivity extends PreferenceActivity { public class InputMethodAndSubtypeEnablerActivity extends PreferenceActivity {
@Override @Override
public Intent getIntent() { public Intent getIntent() {
@@ -28,4 +31,11 @@ public class InputMethodAndSubtypeEnablerActivity extends PreferenceActivity {
} }
return modIntent; return modIntent;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
if (InputMethodAndSubtypeEnabler.class.getName().equals(fragmentName)) return true;
return false;
}
} }

View File

@@ -16,6 +16,7 @@
package com.android.settings.wifi; package com.android.settings.wifi;
import com.android.settings.ButtonBarHandler; import com.android.settings.ButtonBarHandler;
import com.android.settings.ChooseLockGeneric.ChooseLockGenericFragment;
import android.app.Fragment; import android.app.Fragment;
import android.content.Intent; import android.content.Intent;
@@ -42,6 +43,12 @@ public class WifiPickerActivity extends PreferenceActivity implements ButtonBarH
return modIntent; return modIntent;
} }
@Override
protected boolean isValidFragment(String fragmentName) {
if (WifiSettings.class.getName().equals(fragmentName)) return true;
return false;
}
/** /**
* Almost dead copy of * Almost dead copy of
* {@link PreferenceActivity#startWithFragment(String, Bundle, Fragment, int)}, except * {@link PreferenceActivity#startWithFragment(String, Bundle, Fragment, int)}, except