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