diff options
author | Zach Kuznia <zork@google.com> | 2015-10-01 00:08:05 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-10-01 00:08:05 +0000 |
commit | ae8aea76e5cbef1eefde401f8622d05275156cf7 (patch) | |
tree | 3a732a352c2377d48347e23411b844599b05519b /src/com/android | |
parent | 1207a50100bbb3aaa55fc6394e13ad18fc019f8e (diff) | |
parent | 5adcb3d353b066a056b86ae66946a06a251ff1fb (diff) | |
download | packages_apps_Settings-ae8aea76e5cbef1eefde401f8622d05275156cf7.zip packages_apps_Settings-ae8aea76e5cbef1eefde401f8622d05275156cf7.tar.gz packages_apps_Settings-ae8aea76e5cbef1eefde401f8622d05275156cf7.tar.bz2 |
Merge "Allow manual to be read from disk" into mnc-dr-dev
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/settings/DeviceInfoSettings.java | 4 | ||||
-rw-r--r-- | src/com/android/settings/ManualDisplayActivity.java | 85 |
2 files changed, 89 insertions, 0 deletions
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java index 1f0cad1..a839216 100644 --- a/src/com/android/settings/DeviceInfoSettings.java +++ b/src/com/android/settings/DeviceInfoSettings.java @@ -65,6 +65,7 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In private static final String FILENAME_PROC_VERSION = "/proc/version"; private static final String FILENAME_MSV = "/sys/board_properties/soc/msv"; + private static final String KEY_MANUAL = "manual"; private static final String KEY_REGULATORY_INFO = "regulatory_info"; private static final String KEY_SYSTEM_UPDATE_SETTINGS = "system_update_settings"; private static final String PROPERTY_URL_SAFETYLEGAL = "ro.url.safetylegal"; @@ -180,6 +181,9 @@ public class DeviceInfoSettings extends SettingsPreferenceFragment implements In removePreferenceIfBoolFalse(KEY_UPDATE_SETTING, R.bool.config_additional_system_update_setting_enable); + // Remove manual entry if none present. + removePreferenceIfBoolFalse(KEY_MANUAL, R.bool.config_show_manual); + // Remove regulatory information if none present. final Intent intent = new Intent(Settings.ACTION_SHOW_REGULATORY_INFO); if (getPackageManager().queryIntentActivities(intent, 0).isEmpty()) { diff --git a/src/com/android/settings/ManualDisplayActivity.java b/src/com/android/settings/ManualDisplayActivity.java new file mode 100644 index 0000000..8be4fee --- /dev/null +++ b/src/com/android/settings/ManualDisplayActivity.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2015 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. + */ + +package com.android.settings; + +import android.app.Activity; +import android.content.ActivityNotFoundException; +import android.content.Intent; +import android.content.res.Resources; +import android.net.Uri; +import android.os.Bundle; +import android.os.SystemProperties; +import android.text.TextUtils; +import android.util.Log; +import android.widget.Toast; + +import java.io.File; + +/** + * The "dialog" that shows from "Manual" in the Settings app. + */ +public class ManualDisplayActivity extends Activity { + private static final String TAG = "SettingsManualActivity"; + + private static final String DEFAULT_MANUAL_PATH = "/system/etc/MANUAL.html.gz"; + private static final String PROPERTY_MANUAL_PATH = "ro.config.manual_path"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Resources resources = getResources(); + + if (!resources.getBoolean(R.bool.config_show_manual)) { + finish(); // No manual to display for this device + } + + final String path = SystemProperties.get(PROPERTY_MANUAL_PATH, DEFAULT_MANUAL_PATH); + if (TextUtils.isEmpty(path)) { + Log.e(TAG, "The system property for the manual is empty"); + showErrorAndFinish(); + return; + } + + final File file = new File(path); + if (!file.exists() || file.length() == 0) { + Log.e(TAG, "Manual file " + path + " does not exist"); + showErrorAndFinish(); + return; + } + + final Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setDataAndType(Uri.fromFile(file), "text/html"); + + intent.putExtra(Intent.EXTRA_TITLE, getString(R.string.settings_manual_activity_title)); + intent.addCategory(Intent.CATEGORY_DEFAULT); + intent.setPackage("com.android.htmlviewer"); + + try { + startActivity(intent); + finish(); + } catch (ActivityNotFoundException e) { + Log.e(TAG, "Failed to find viewer", e); + showErrorAndFinish(); + } + } + + private void showErrorAndFinish() { + Toast.makeText(this, R.string.settings_manual_activity_unavailable, Toast.LENGTH_LONG) + .show(); + finish(); + } +} |