package com.androidcookbook.aboutboxdemo; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; import android.content.pm.PackageManager; import android.text.SpannableString; import android.text.util.Linkify; import android.view.InflateException; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class AboutBox { static String VersionName(Context context) { try { return context.getPackageManager().getPackageInfo( context.getPackageName(), 0).versionName; } catch (PackageManager.NameNotFoundException e) { return "Unknown"; } } public static void Show(Activity callingActivity) { //Use a Spannable to allow for links highlighting SpannableString aboutText = new SpannableString("Version " + VersionName(callingActivity) + "\n\n" + callingActivity.getString(R.string.about)); // views to pass to AlertDialog.Builder and to set the text View about; TextView tvAbout; try { //Inflate the custom view LayoutInflater inflater = callingActivity.getLayoutInflater(); about = inflater.inflate(R.layout.aboutbox, (ViewGroup) callingActivity.findViewById(R.id.aboutView)); tvAbout = (TextView) about.findViewById(R.id.aboutText); } catch (InflateException e) { // Unchecked exception, unlikely, but default to TextView if it occurs about = tvAbout = new TextView(callingActivity); } //Set the about text tvAbout.setText(aboutText); // Now Linkify the text Linkify.addLinks(tvAbout, Linkify.ALL); //Build and show the dialog new AlertDialog.Builder(callingActivity) .setTitle("About " + callingActivity.getString(R.string.app_name)) .setCancelable(true) .setIcon(R.drawable.icon) .setPositiveButton("OK", null) .setView(about) .show(); //Builder method returns allow for method chaining } }