summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml2
-rw-r--r--res/values/strings.xml3
-rw-r--r--src/com/android/settings/ApnEditor.java24
3 files changed, 22 insertions, 7 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index a77728c..c22d115 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -105,7 +105,7 @@
<activity android:name="ApnSettings" android:label="@string/apn_settings"
android:configChanges="orientation|keyboardHidden"
- android:launchMode="singleInstance"
+ android:launchMode="singleTask"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9475346..08d6e1c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2129,4 +2129,7 @@ found in the list of installed applications.</string>
<string name="backup_erase_dialog_title">Settings backup</string>
<!-- Dialog title for confirmation to erase backup data from server -->
<string name="backup_erase_dialog_message">Are you sure you want to stop backing up your settings and erase all copies on Google servers?</string>
+
+ <!-- Name to assign to a Network Access Point that was saved without a name -->
+ <string name="untitled_apn">Untitled</string>
</resources>
diff --git a/src/com/android/settings/ApnEditor.java b/src/com/android/settings/ApnEditor.java
index 0e7ab5e..62856d1 100644
--- a/src/com/android/settings/ApnEditor.java
+++ b/src/com/android/settings/ApnEditor.java
@@ -150,7 +150,7 @@ public class ApnEditor extends PreferenceActivity
if (action.equals(Intent.ACTION_EDIT)) {
mUri = intent.getData();
} else if (action.equals(Intent.ACTION_INSERT)) {
- if (mFirstTime) {
+ if (mFirstTime || icicle.getInt(SAVED_POS) == 0) {
mUri = getContentResolver().insert(intent.getData(), new ContentValues());
} else {
mUri = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI,
@@ -185,12 +185,14 @@ public class ApnEditor extends PreferenceActivity
@Override
public void onResume() {
super.onResume();
- getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
+ getPreferenceScreen().getSharedPreferences()
+ .registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
- getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
+ getPreferenceScreen().getSharedPreferences()
+ .unregisterOnSharedPreferenceChangeListener(this);
super.onPause();
}
@@ -328,8 +330,9 @@ public class ApnEditor extends PreferenceActivity
@Override
protected void onSaveInstanceState(Bundle icicle) {
super.onSaveInstanceState(icicle);
- validateAndSave(true);
- icicle.putInt(SAVED_POS, mCursor.getInt(ID_INDEX));
+ if (validateAndSave(true)) {
+ icicle.putInt(SAVED_POS, mCursor.getInt(ID_INDEX));
+ }
}
/**
@@ -366,9 +369,18 @@ public class ApnEditor extends PreferenceActivity
return false;
}
+ // If it's a new APN and a name or apn haven't been entered, then erase the entry
+ if (force && mNewApn && name.length() < 1 && apn.length() < 1) {
+ getContentResolver().delete(mUri, null, null);
+ return false;
+ }
+
ContentValues values = new ContentValues();
- values.put(Telephony.Carriers.NAME, name);
+ // Add a dummy name "Untitled", if the user exits the screen without adding a name but
+ // entered other information worth keeping.
+ values.put(Telephony.Carriers.NAME,
+ name.length() < 1 ? getResources().getString(R.string.untitled_apn) : name);
values.put(Telephony.Carriers.APN, apn);
values.put(Telephony.Carriers.PROXY, checkNotSet(mProxy.getText()));
values.put(Telephony.Carriers.PORT, checkNotSet(mPort.getText()));