// Copyright 2009 Google Inc. // Copyright 2011 NPR // // 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 org.npr.android.news; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.text.Html; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; public class AboutActivity extends TitleActivity implements OnClickListener { private static final String LOG_TAG = AboutActivity.class.getName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ViewGroup container = (ViewGroup) findViewById(R.id.Content); ViewGroup.inflate(this, R.layout.about, container); TextView tv = (TextView) findViewById(R.id.AboutText); Map<String, String> map = new LinkedHashMap<String, String>(); map.put(getString(R.string.msg_about_developer), getString(R.string.msg_about_developer_value)); map.put(getString(R.string.msg_about_designer), getString(R.string.msg_about_designer_value)); map.put(getString(R.string.msg_about_producer), getString(R.string.msg_about_producer_value)); map.put(getString(R.string.msg_about_contact), getString(R.string.msg_about_contact_value)); map.put(getString(R.string.msg_about_version_name), getVersionName()); map.put(getString(R.string.msg_about_version_code), "" + getVersionCode()); populateField(map, tv); Button terms = (Button) findViewById(R.id.TermsButton); terms.setOnClickListener(this); Button privacy = (Button) findViewById(R.id.PrivacyButton); privacy.setOnClickListener(this); Button feedback = (Button) findViewById(R.id.FeedbackButton); feedback.setOnClickListener(this); Button share = (Button) findViewById(R.id.ShareButton); share.setOnClickListener(this); Button learnMore = (Button) findViewById(R.id.LearnMoreButton); learnMore.setOnClickListener(this); } @Override public CharSequence getMainTitle() { return getString(R.string.msg_about_title); } @Override public void onClick(View v) { String url = null; switch (v.getId()) { case R.id.FeedbackButton: url = "http://m.npr.org/contact/index"; break; case R.id.PrivacyButton: url = "http://m.npr.org/front/privacyPolicy"; break; case R.id.TermsButton: url = "http://m.npr.org/front/termsOfUse"; break; case R.id.LearnMoreButton: url = "http://npr.org/android"; break; case R.id.ShareButton: Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND); shareIntent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name)); shareIntent.putExtra(Intent.EXTRA_TEXT, "https://market.android.com/search?q=pname:org.npr.android.news"); shareIntent.setType("text/plain"); startActivity(Intent.createChooser(shareIntent, getString(R.string.msg_share_app))); return; } if (url != null) { Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); startActivity(i); } else { super.onClick(v); } } private void populateField(Map<String, String> values, TextView view) { StringBuilder sb = new StringBuilder(); for (Entry<String, String> entry : values.entrySet()) { String fieldName = entry.getKey(); String fieldValue = entry.getValue(); sb.append(fieldName) .append(": ") .append("<b>").append(fieldValue).append("</b><br>"); } view.setText(Html.fromHtml(sb.toString())); } private String getVersionName() { String version; try { PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), 0); version = pi.versionName; } catch (PackageManager.NameNotFoundException e) { Log.e(LOG_TAG, "Error getting package details", e); version = "Package name not found"; } return version; } private int getVersionCode() { int version = -1; try { PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), 0); version = pi.versionCode; } catch (PackageManager.NameNotFoundException e) { Log.e(LOG_TAG, "Error getting package details", e); } return version; } }