summaryrefslogtreecommitdiff
path: root/samples/quake/src/com/android/quake/llvm/PreconditionActivityHelper.java
blob: 4e9b26c052c3ca50d4ab183cb4b2837154785e06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package com.android.quake.llvm;

import android.app.Activity;
import android.content.Intent;

/**
 * Usage:
 *
 * Intent intent = PreconditionActivityHelper.createPreconditionIntent(
 *     activity, WaitActivity.class);
 * // Optionally add extras to pass arguments to the intent
 * intent.putExtra(Utils.EXTRA_ACCOUNT, account);
 * PreconditionActivityHelper.startPreconditionActivityAndFinish(this, intent);
 *
 * // And in the wait activity:
 * PreconditionActivityHelper.startOriginalActivityAndFinish(this);
 *
 */

public class PreconditionActivityHelper {
    /**
     * Create a precondition activity intent.
     * @param activity the original activity
     * @param preconditionActivityClazz the precondition activity's class
     * @return an intent which will launch the precondition activity.
     */
    public static Intent createPreconditionIntent(Activity activity,
            Class preconditionActivityClazz) {
        Intent newIntent = new Intent();
        newIntent.setClass(activity, preconditionActivityClazz);
        newIntent.putExtra(EXTRA_WRAPPED_INTENT, activity.getIntent());
        return newIntent;
    }

    /**
     * Start the precondition activity using a given intent, which should
     * have been created by calling createPreconditionIntent.
     * @param activity
     * @param intent
     */
    public static void startPreconditionActivityAndFinish(Activity activity,
            Intent intent) {
        activity.startActivity(intent);
        activity.finish();
    }

    /**
     * Start the original activity, and finish the precondition activity.
     * @param preconditionActivity
     */
    public static void startOriginalActivityAndFinish(
            Activity preconditionActivity) {
        preconditionActivity.startActivity(
                (Intent) preconditionActivity.getIntent()
                    .getParcelableExtra(EXTRA_WRAPPED_INTENT));
        preconditionActivity.finish();
    }

    static private final String EXTRA_WRAPPED_INTENT =
        "PreconditionActivityHelper_wrappedIntent";
}