2 * Copyright (C) 2007-2011 OpenIntents.org
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
17 package org.openintents.filemanager;
\r
19 import org.openintents.util.VersionUtils;
\r
21 import android.app.Activity;
\r
22 import android.content.ComponentName;
\r
23 import android.content.Context;
\r
24 import android.content.Intent;
\r
25 import android.content.SharedPreferences;
\r
26 import android.preference.PreferenceManager;
\r
27 import android.util.Log;
\r
32 * Displays the Eula for the first time, reading it from a raw resource.
\r
37 public class EulaOrNewVersion {
\r
38 /** TAG for log messages. */
\r
39 private static final String TAG = "EulaOrNewVersion";
\r
40 private static final boolean debug = false;
\r
42 public static final String PREFERENCES_EULA_ACCEPTED = "eula_accepted";
\r
44 public static final String PREFERENCES_VERSION_NUMBER = "org.openintents.distribution.version_number_check";
\r
47 * Extra for main intent.
\r
48 * Specifies activity that should be launched after Eula has been accepted.
\r
50 static final String EXTRA_LAUNCH_ACTIVITY_PACKAGE = "org.openintents.extra.launch_activity_package";
\r
51 static final String EXTRA_LAUNCH_ACTIVITY_CLASS = "org.openintents.extra.launch_activity_class";
\r
52 static final String EXTRA_LAUNCH_ACTIVITY_INTENT = "org.openintents.extra.launch_activity_intent";
\r
55 * Test whether EULA has been accepted. Otherwise display EULA.
\r
57 * @return True if Eula needs to be shown.
\r
59 static boolean showEula(Activity activity) {
\r
60 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(activity);
\r
61 boolean accepted = sp.getBoolean(PREFERENCES_EULA_ACCEPTED, false);
\r
64 if (debug) Log.d(TAG, "Eula has been accepted.");
\r
67 if (debug) Log.d(TAG, "Eula has not been accepted yet.");
\r
69 startForwardActivity(activity, EulaActivity.class);
\r
74 static void storeEulaAccepted(Context context) {
\r
75 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
\r
76 SharedPreferences.Editor e = sp.edit();
\r
77 e.putBoolean(PREFERENCES_EULA_ACCEPTED, true);
\r
82 * Test whether version code changed.
\r
84 * @return True if version code changed and recent changes are being shown.
\r
86 static boolean showNewVersion(Activity activity) {
\r
87 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(activity);
\r
88 int lastVersion = sp.getInt(PREFERENCES_VERSION_NUMBER, 0);
\r
89 int thisVersion = VersionUtils.getVersionCode(activity);
\r
91 if (lastVersion == thisVersion) {
\r
92 if (debug) Log.i(TAG, "Same version " + lastVersion + " as last launch.");
\r
95 if (debug) Log.i(TAG, "Newer version " + thisVersion + " since last launch " + lastVersion + ". Show recent changes.");
\r
97 startForwardActivity(activity, NewVersionActivity.class);
\r
102 static void storeCurrentVersionCode(Context context) {
\r
103 SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
\r
104 int thisVersion = VersionUtils.getVersionCode(context);
\r
105 SharedPreferences.Editor e = sp.edit();
\r
106 e.putInt(PREFERENCES_VERSION_NUMBER, thisVersion);
\r
110 private static void startForwardActivity(Activity activity, Class launchClass) {
\r
111 // Launch Eula activity
\r
112 Intent forwardIntent = activity.getIntent();
\r
114 Intent i = new Intent(activity, launchClass);
\r
115 ComponentName ci = activity.getComponentName();
\r
117 // Specify in intent extras which activity should be called
\r
118 // after Eula has been accepted.
\r
119 if (debug) Log.d(TAG, "Local package name: " + ci.getPackageName());
\r
120 if (debug) Log.d(TAG, "Local class name: " + ci.getClassName());
\r
121 i.putExtra(EXTRA_LAUNCH_ACTIVITY_PACKAGE, ci.getPackageName());
\r
122 i.putExtra(EXTRA_LAUNCH_ACTIVITY_CLASS, ci.getClassName());
\r
123 if (forwardIntent != null) {
\r
124 i.putExtra(EXTRA_LAUNCH_ACTIVITY_INTENT, forwardIntent);
\r
126 i.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
\r
127 activity.startActivity(i);
\r