1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkeyimport android.app.Activity; 20e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkeyimport android.content.ActivityNotFoundException; 21e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkeyimport android.content.Intent; 22e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkeyimport android.net.Uri; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.text.TextUtils; 26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.Log; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.widget.Toast; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 29e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkeyimport java.io.File; 30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 31afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/** 32afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * The "dialog" that shows from "License" in the Settings app. 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 342cb19ab9e2a8d3de5695037b236ad00cde603808Henrik Carlssonpublic class SettingsLicenseActivity extends Activity { 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String TAG = "SettingsLicenseActivity"; 36afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String DEFAULT_LICENSE_PATH = "/system/etc/NOTICE.html.gz"; 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String PROPERTY_LICENSE_PATH = "ro.config.license_path"; 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onCreate(Bundle savedInstanceState) { 42afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(savedInstanceState); 43afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 44e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey final String path = SystemProperties.get(PROPERTY_LICENSE_PATH, DEFAULT_LICENSE_PATH); 45e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey if (TextUtils.isEmpty(path)) { 46e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey Log.e(TAG, "The system property for the license file is empty"); 47afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project showErrorAndFinish(); 48afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return; 49afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 51e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey final File file = new File(path); 52e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey if (!file.exists() || file.length() == 0) { 53e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey Log.e(TAG, "License file " + path + " does not exist"); 54e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey showErrorAndFinish(); 55e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey return; 56c101d2d3babd9e456666e6dbc87e7aefa6d27795Amith Yamasani } 57afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 58e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey // Kick off external viewer due to WebView security restrictions; we 59e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey // carefully point it at HTMLViewer, since it offers to decompress 60e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey // before viewing. 61e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey final Intent intent = new Intent(Intent.ACTION_VIEW); 62e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey intent.setDataAndType(Uri.fromFile(file), "text/html"); 63e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey intent.putExtra(Intent.EXTRA_TITLE, getString(R.string.settings_license_activity_title)); 64e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey intent.addCategory(Intent.CATEGORY_DEFAULT); 65e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey intent.setPackage("com.android.htmlviewer"); 66e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey 67e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey try { 68e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey startActivity(intent); 69e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey finish(); 70e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey } catch (ActivityNotFoundException e) { 71e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey Log.e(TAG, "Failed to find viewer", e); 72e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey showErrorAndFinish(); 73e16e44f7568d015b29b01acde01551854c9a1c5dJeff Sharkey } 74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void showErrorAndFinish() { 77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Toast.makeText(this, R.string.settings_license_activity_unavailable, Toast.LENGTH_LONG) 78afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .show(); 79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project finish(); 80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 82