1ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn/* 2ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * Copyright (C) 2013 The Android Open Source Project 3ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * 4ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License"); 5ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * you may not use this file except in compliance with the License. 6ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * You may obtain a copy of the License at 7ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * 8ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * http://www.apache.org/licenses/LICENSE-2.0 9ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * 10ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * Unless required by applicable law or agreed to in writing, software 11ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS, 12ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * See the License for the specific language governing permissions and 14ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * limitations under the License. 15ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn */ 16ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn 17ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornpackage com.google.android.test.shared_library; 18ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn 19ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.app.Activity; 20ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.app.AlertDialog; 21ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.app.Dialog; 22ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.app.DialogFragment; 23ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.content.Context; 24ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.content.DialogInterface; 25ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.content.Intent; 26ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.content.pm.PackageManager; 27ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.content.res.Resources; 28ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.net.Uri; 29ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornimport android.os.Bundle; 30ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn 31ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn/** 32ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * This is the dialog we show when the library's version is older than 33ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn * the version the app needs. 34ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn */ 35ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackbornpublic class VersionDialog extends DialogFragment { 36ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn @Override 37ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn public Dialog onCreateDialog(Bundle savedInstanceState) { 38ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn final Activity activity = getActivity(); 39ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn 40ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn // Need to use our library's resources for showing the dialog. 41ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn final Context context; 42ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn try { 43ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn context = activity.createPackageContext(SharedLibraryMain.LIBRARY_PACKAGE, 0); 44ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn } catch (PackageManager.NameNotFoundException e) { 45ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn throw new IllegalStateException("Can't find my package!", e); 46ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn } 47ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn 48ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn final Resources res = context.getResources(); 49ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn AlertDialog.Builder builder = new AlertDialog.Builder(activity); 50ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn builder.setTitle(res.getText(R.string.upgrade_title)); 51ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn builder.setMessage(res.getString(R.string.upgrade_body, 52ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn activity.getApplicationInfo().loadLabel(activity.getPackageManager()), 53ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn context.getApplicationInfo().loadLabel(context.getPackageManager()))); 54ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn builder.setPositiveButton(res.getText(R.string.upgrade_button), 55ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn new Dialog.OnClickListener() { 56ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn @Override 57ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn public void onClick(DialogInterface dialog, int which) { 58ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn // Launch play store into the details of our app. 59ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn try { 60ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn activity.startActivity(new Intent(Intent.ACTION_VIEW, 61ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn Uri.parse("market://details?id=" 62ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn + SharedLibraryMain.LIBRARY_PACKAGE))); 63ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn } catch (android.content.ActivityNotFoundException anfe) { 64ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn activity.startActivity(new Intent(Intent.ACTION_VIEW, 65ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn Uri.parse("http://play.google.com/store/apps/details?id=" 66ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn + SharedLibraryMain.LIBRARY_PACKAGE))); 67ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn } 68ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn } 69ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn }); 70ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn return builder.create(); 71ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn } 72ce5abb0a5542a0dae00a2af3b174d83cdd85a21fDianne Hackborn} 73