1e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu/* 2e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * Copyright 2015, The Android Open Source Project 3e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * 4e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * Licensed under the Apache License, Version 2.0 (the "License"); 5e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * you may not use this file except in compliance with the License. 6e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * You may obtain a copy of the License at 7e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * 8e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * http://www.apache.org/licenses/LICENSE-2.0 9e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * 10e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * Unless required by applicable law or agreed to in writing, software 11e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * distributed under the License is distributed on an "AS IS" BASIS, 12e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * See the License for the specific language governing permissions and 14e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * limitations under the License. 15e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu */ 16e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu 17e2e1295820997cde9e2e54a14bae602b674be3faRubin Xupackage com.android.managedprovisioning; 18e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu 19e2e1295820997cde9e2e54a14bae602b674be3faRubin Xuimport android.app.Activity; 20e2e1295820997cde9e2e54a14bae602b674be3faRubin Xuimport android.content.Context; 21e2e1295820997cde9e2e54a14bae602b674be3faRubin Xuimport android.content.Intent; 22e2e1295820997cde9e2e54a14bae602b674be3faRubin Xuimport android.os.Bundle; 23e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu 24e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu 25e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu/** 26e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * A trampoline activity that starts a real activity in a new task. This is used so that we can call 27e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * startActivityForResult() to start the real activity, from a non-activity context. The target 28e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * activity can the check the caller by {@link Activity#getCallingPackage} or 29e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu * {@link Activity#getCallingActivity}. 30e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu */ 31e2e1295820997cde9e2e54a14bae602b674be3faRubin Xupublic class TrampolineActivity extends Activity { 32e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu private static final String EXTRA_INTENT = "intent"; 33e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu @Override 34e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu protected void onCreate(Bundle savedInstanceState) { 35e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu super.onCreate(savedInstanceState); 36e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu Intent target = (Intent) getIntent().getParcelableExtra(EXTRA_INTENT); 37e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu if (target != null) { 38e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu // So that the target activity can get caller information via 39e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu // {@link Activity#getCallingPackage}. 40e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu startActivityForResult(target, 0); 41e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu } 42e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu finish(); 43e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu } 44e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu 45e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu public static void startActivity(Context context, Intent target) { 46e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu Intent intent = new Intent(context, TrampolineActivity.class); 47e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu intent.putExtra(EXTRA_INTENT, target); 48e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 49e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu context.startActivity(intent); 50e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu } 51e2e1295820997cde9e2e54a14bae602b674be3faRubin Xu} 52