152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/* 252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * you may not use this file except in compliance with the License. 652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * You may obtain a copy of the License at 752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * 1052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * See the License for the specific language governing permissions and 1452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * limitations under the License. 1552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 1652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 1752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpackage com.android.commands.monkey; 1852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 1952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.app.IActivityManager; 2052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.ComponentName; 2152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.Intent; 2252bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lauimport android.os.Bundle; 2352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.os.RemoteException; 2452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.IWindowManager; 2552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 2652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/** 2752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * monkey activity event 2852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */ 2973421de1a007184cfef536966a6b7f3a3a2cdc91Guang Zhupublic class MonkeyActivityEvent extends MonkeyEvent { 3073421de1a007184cfef536966a6b7f3a3a2cdc91Guang Zhu private ComponentName mApp; 319ab015751dc21fd648dd3f7abdff8a17a2abd5aaYu Shan Emily Lau long mAlarmTime = 0; 3273421de1a007184cfef536966a6b7f3a3a2cdc91Guang Zhu 3352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public MonkeyActivityEvent(ComponentName app) { 3452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project super(EVENT_TYPE_ACTIVITY); 3552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project mApp = app; 3652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 3752bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau 389ab015751dc21fd648dd3f7abdff8a17a2abd5aaYu Shan Emily Lau public MonkeyActivityEvent(ComponentName app, long arg) { 3952bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau super(EVENT_TYPE_ACTIVITY); 4052bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau mApp = app; 4152bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau mAlarmTime = arg; 4252bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau } 4352bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau 4452bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau /** 4552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * @return Intent for the new activity 4652bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau */ 4773421de1a007184cfef536966a6b7f3a3a2cdc91Guang Zhu private Intent getEvent() { 4852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project Intent intent = new Intent(Intent.ACTION_MAIN); 4952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project intent.addCategory(Intent.CATEGORY_LAUNCHER); 5052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project intent.setComponent(mApp); 5173421de1a007184cfef536966a6b7f3a3a2cdc91Guang Zhu intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED); 5252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return intent; 5352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 5452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project 5552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project @Override 5652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project public int injectEvent(IWindowManager iwm, IActivityManager iam, int verbose) { 5752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project Intent intent = getEvent(); 5852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project if (verbose > 0) { 59f083bd43a0c6b7bf1b88775ac0f1d0bec1281a75Jeff Brown System.out.println(":Switch: " + intent.toUri(0)); 6052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 6152bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau 629ab015751dc21fd648dd3f7abdff8a17a2abd5aaYu Shan Emily Lau if (mAlarmTime != 0){ 6352bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau Bundle args = new Bundle(); 649ab015751dc21fd648dd3f7abdff8a17a2abd5aaYu Shan Emily Lau args.putLong("alarmTime", mAlarmTime); 6552bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau intent.putExtras(args); 6652bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau } 6752bbaa30520a0eda5ae840d31308b65412f51cc4Yu Shan Emily Lau 6852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project try { 696b16feb5a066fce5c2abf6e326967901d4d77481Dianne Hackborn iam.startActivity(null, null, intent, null, null, null, 0, 7051cb3a4dbc7dcf86c6d885e8cbf129914f2ad162Dianne Hackborn 0, null, null, null); 7152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } catch (RemoteException e) { 7252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project System.err.println("** Failed talking with activity manager!"); 7352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return MonkeyEvent.INJECT_ERROR_REMOTE_EXCEPTION; 7452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } catch (SecurityException e) { 7552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project if (verbose > 0) { 7652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project System.out.println("** Permissions error starting activity " 77f083bd43a0c6b7bf1b88775ac0f1d0bec1281a75Jeff Brown + intent.toUri(0)); 7852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 7952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return MonkeyEvent.INJECT_ERROR_SECURITY_EXCEPTION; 8052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 8152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project return MonkeyEvent.INJECT_SUCCESS; 8252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project } 8352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project} 84