summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AndroidManifest.xml3
-rwxr-xr-xres/values/config.xml22
-rw-r--r--res/values/strings.xml11
-rw-r--r--src/com/android/settings/SettingsLicenseActivity.java193
-rw-r--r--src/com/android/settings/deviceinfo/Status.java3
5 files changed, 183 insertions, 49 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index f07afa3..bc15121 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -480,7 +480,8 @@
<activity android:name="SettingsLicenseActivity"
android:label="@string/settings_license_activity_title"
- android:theme="@*android:style/Theme.Holo.Dialog.Alert">
+ android:theme="@*android:style/Theme.Holo.Dialog.Alert"
+ android:configChanges="orientation">
<intent-filter>
<action android:name="android.settings.LICENSE" />
<category android:name="android.intent.category.DEFAULT" />
diff --git a/res/values/config.xml b/res/values/config.xml
new file mode 100755
index 0000000..4b08c42
--- /dev/null
+++ b/res/values/config.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2007 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.
+-->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+ <!-- If false, MIN is displayed. If true, MSID is displayed. -->
+ <bool name="config_msid_enable" translatable="false">false</bool>
+
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 360493c..c5b1e7f 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -272,6 +272,15 @@
<!-- Strings for device profile auto connect setting -->
<string name="bluetooth_auto_connect">Auto connect</string>
+ <!-- Activity label of BluetoothPermissionActivity [CHAR LIMIT=none]-->
+ <string name="bluetooth_connection_permission_request">"Bluetooth connection request"</string>
+
+ <!-- Notification message when a remote Bluetooth device wants to connect to a Bluetooth profile [CHAR LIMIT=none]-->
+ <string name="bluetooth_connection_notif_message">"Touch to connect to \u0022<xliff:g id="device_name">%1$s</xliff:g>\u0022"</string>
+
+ <!-- Bluetooth connection permission Alert Activity text [CHAR LIMIT=none]-->
+ <string name="bluetooth_connection_dialog_text">"Do you want to connect to \u0022<xliff:g id="device_name">%1$s</xliff:g>\u0022?"</string>
+
<!-- Date & time settings screen title -->
<string name="date_and_time">Date &amp; time settings</string>
<!-- Date/time settings. Summary of the checkbox for choosing between 12 hour time or 24 hour time. Sample of 12-hour time -->
@@ -1548,6 +1557,8 @@
<string name="status_number" product="default">My phone number</string>
<!-- About phone, status item title. The phone MIN number of the current device.-->
<string name="status_min_number">MIN</string>
+ <!-- About phone, status item title. The phone MSID number of the current device.-->
+ <string name="status_msid_number">MSID</string>
<!-- About phone, status item title. The phone PRL Version of the current device.-->
<string name="status_prl_version">PRL Version</string>
<!-- About phone, status item title. The phone MEID number of the current LTE/CDMA device. [CHAR LIMIT=30] -->
diff --git a/src/com/android/settings/SettingsLicenseActivity.java b/src/com/android/settings/SettingsLicenseActivity.java
index 0b809e1..99828ce 100644
--- a/src/com/android/settings/SettingsLicenseActivity.java
+++ b/src/com/android/settings/SettingsLicenseActivity.java
@@ -17,6 +17,8 @@
package com.android.settings;
import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
import android.os.SystemProperties;
import android.text.TextUtils;
import android.util.Config;
@@ -24,6 +26,12 @@ import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
+import android.app.Activity;
+import android.app.AlertDialog;
+import android.app.ProgressDialog;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnDismissListener;
+import android.content.res.Configuration;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -32,13 +40,10 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.util.zip.GZIPInputStream;
-import com.android.internal.app.AlertActivity;
-import com.android.internal.app.AlertController;
-
/**
* The "dialog" that shows from "License" in the Settings app.
*/
-public class SettingsLicenseActivity extends AlertActivity {
+public class SettingsLicenseActivity extends Activity {
private static final String TAG = "SettingsLicenseActivity";
private static final boolean LOGV = false || Config.LOGV;
@@ -46,6 +51,83 @@ public class SettingsLicenseActivity extends AlertActivity {
private static final String DEFAULT_LICENSE_PATH = "/system/etc/NOTICE.html.gz";
private static final String PROPERTY_LICENSE_PATH = "ro.config.license_path";
+ private Handler mHandler;
+ private WebView mWebView;
+ private ProgressDialog mSpinnerDlg;
+ private AlertDialog mTextDlg;
+
+ private class LicenseFileLoader implements Runnable {
+
+ private static final String INNER_TAG = "SettingsLicenseActivity.LicenseFileLoader";
+ public static final int STATUS_OK = 0;
+ public static final int STATUS_NOT_FOUND = 1;
+ public static final int STATUS_READ_ERROR = 2;
+ public static final int STATUS_EMPTY_FILE = 3;
+
+ private String mFileName;
+ private Handler mHandler;
+
+ public LicenseFileLoader(String fileName, Handler handler) {
+ mFileName = fileName;
+ mHandler = handler;
+ }
+
+ public void run() {
+
+ int status = STATUS_OK;
+
+ InputStreamReader inputReader = null;
+ StringBuilder data = new StringBuilder(2048);
+ try {
+ char[] tmp = new char[2048];
+ int numRead;
+ if (mFileName.endsWith(".gz")) {
+ inputReader = new InputStreamReader(
+ new GZIPInputStream(new FileInputStream(mFileName)));
+ } else {
+ inputReader = new FileReader(mFileName);
+ }
+
+ while ((numRead = inputReader.read(tmp)) >= 0) {
+ data.append(tmp, 0, numRead);
+ }
+ } catch (FileNotFoundException e) {
+ Log.e(INNER_TAG, "License HTML file not found at " + mFileName, e);
+ status = STATUS_NOT_FOUND;
+ } catch (IOException e) {
+ Log.e(INNER_TAG, "Error reading license HTML file at " + mFileName, e);
+ status = STATUS_READ_ERROR;
+ } finally {
+ try {
+ if (inputReader != null) {
+ inputReader.close();
+ }
+ } catch (IOException e) {
+ }
+ }
+
+ if ((status == STATUS_OK) && TextUtils.isEmpty(data)) {
+ Log.e(INNER_TAG, "License HTML is empty (from " + mFileName + ")");
+ status = STATUS_EMPTY_FILE;
+ }
+
+ // Tell the UI thread that we are finished.
+ Message msg = mHandler.obtainMessage(status, null);
+ if (status == STATUS_OK) {
+ msg.obj = data.toString();
+ }
+ mHandler.sendMessage(msg);
+ }
+ }
+
+ public SettingsLicenseActivity() {
+ super();
+ mHandler = null;
+ mWebView = null;
+ mSpinnerDlg = null;
+ mTextDlg = null;
+ }
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -57,67 +139,82 @@ public class SettingsLicenseActivity extends AlertActivity {
return;
}
- InputStreamReader inputReader = null;
- StringBuilder data = null;
- try {
- data = new StringBuilder(2048);
- char tmp[] = new char[2048];
- int numRead;
- if (fileName.endsWith(".gz")) {
- inputReader = new InputStreamReader(
- new GZIPInputStream(new FileInputStream(fileName)));
- } else {
- inputReader = new FileReader(fileName);
- }
- while ((numRead = inputReader.read(tmp)) >= 0) {
- data.append(tmp, 0, numRead);
- }
- } catch (FileNotFoundException e) {
- Log.e(TAG, "License HTML file not found at " + fileName, e);
- showErrorAndFinish();
- return;
- } catch (IOException e) {
- Log.e(TAG, "Error reading license HTML file at " + fileName, e);
- showErrorAndFinish();
- return;
- } finally {
- try {
- if (inputReader != null) {
- inputReader.close();
+ // The activity does not have any view itself,
+ // so set it invisible to avoid displaying the title text in the background.
+ setVisible(false);
+
+ mWebView = new WebView(this);
+
+ mHandler = new Handler() {
+
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+
+ if (msg.what == LicenseFileLoader.STATUS_OK) {
+ String text = (String) msg.obj;
+ showPageOfText(text);
+ } else {
+ showErrorAndFinish();
}
- } catch (IOException e) {
}
- }
+ };
- if (TextUtils.isEmpty(data)) {
- Log.e(TAG, "License HTML is empty (from " + fileName + ")");
- showErrorAndFinish();
- return;
+ CharSequence title = getText(R.string.settings_license_activity_title);
+ CharSequence msg = getText(R.string.settings_license_activity_loading);
+
+ ProgressDialog pd = ProgressDialog.show(this, title, msg, true, false);
+ pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+ mSpinnerDlg = pd;
+
+ // Start separate thread to do the actual loading.
+ Thread thread = new Thread(new LicenseFileLoader(fileName, mHandler));
+ thread.start();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ if (mTextDlg != null) {
+ mTextDlg.dismiss();
}
+ }
+
+ private void showPageOfText(String text) {
+ // Create an AlertDialog to display the WebView in.
+ AlertDialog.Builder builder = new AlertDialog.Builder(SettingsLicenseActivity.this);
+ builder.setCancelable(true)
+ .setView(mWebView)
+ .setTitle(R.string.settings_license_activity_title);
+
+ mTextDlg = builder.create();
+ mTextDlg.setOnDismissListener(new OnDismissListener() {
- WebView webView = new WebView(this);
+ public void onDismiss(DialogInterface dlgi) {
+ SettingsLicenseActivity.this.finish();
+ }
+ });
// Begin the loading. This will be done in a separate thread in WebView.
- webView.loadDataWithBaseURL(null, data.toString(), "text/html", "utf-8", null);
- webView.setWebViewClient(new WebViewClient() {
+ mWebView.loadDataWithBaseURL(null, text, "text/html", "utf-8", null);
+ mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
- // Change from 'Loading...' to the real title
- mAlert.setTitle(getString(R.string.settings_license_activity_title));
+ mSpinnerDlg.dismiss();
+ mSpinnerDlg = null;
+ mTextDlg.show();
+ mTextDlg = null;
}
});
- final AlertController.AlertParams p = mAlertParams;
- p.mTitle = getString(R.string.settings_license_activity_loading);
- p.mView = webView;
- p.mForceInverseBackground = true;
- setupAlert();
+ mWebView = null;
}
private void showErrorAndFinish() {
+ mSpinnerDlg.dismiss();
+ mSpinnerDlg = null;
Toast.makeText(this, R.string.settings_license_activity_unavailable, Toast.LENGTH_LONG)
.show();
finish();
}
-
}
diff --git a/src/com/android/settings/deviceinfo/Status.java b/src/com/android/settings/deviceinfo/Status.java
index fbc1598..456bc98 100644
--- a/src/com/android/settings/deviceinfo/Status.java
+++ b/src/com/android/settings/deviceinfo/Status.java
@@ -229,6 +229,9 @@ public class Status extends PreferenceActivity {
if (mPhone.getPhoneName().equals("CDMA")) {
setSummaryText(KEY_MEID_NUMBER, mPhone.getMeid());
setSummaryText(KEY_MIN_NUMBER, mPhone.getCdmaMin());
+ if (getResources().getBoolean(R.bool.config_msid_enable)) {
+ findPreference(KEY_MIN_NUMBER).setTitle(R.string.status_msid_number);
+ }
setSummaryText(KEY_PRL_VERSION, mPhone.getCdmaPrlVersion());
removePreferenceFromScreen(KEY_IMEI_SV);