| /* | |
| * Copyright (C) 2017 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| package com.googlecode.android_scripting; | |
| import android.app.PendingIntent; | |
| import android.content.ComponentName; | |
| import android.content.Context; | |
| import android.content.Intent; | |
| import android.os.Parcelable; | |
| import com.googlecode.android_scripting.interpreter.Interpreter; | |
| import java.io.File; | |
| public class IntentBuilders { | |
| /** An arbitrary value that is used to identify pending intents for executing scripts. */ | |
| private static final int EXECUTE_SCRIPT_REQUEST_CODE = 0x12f412a; | |
| private IntentBuilders() { | |
| // Utility class. | |
| } | |
| public static Intent buildTriggerServiceIntent() { | |
| Intent intent = new Intent(); | |
| intent.setComponent(Constants.TRIGGER_SERVICE_COMPONENT_NAME); | |
| return intent; | |
| } | |
| /** | |
| * Builds an intent that will launch a script in the background. | |
| * | |
| * @param script | |
| * the script to launch | |
| * @return the intent that will launch the script | |
| */ | |
| public static Intent buildStartInBackgroundIntent(File script) { | |
| final ComponentName componentName = Constants.SL4A_SERVICE_LAUNCHER_COMPONENT_NAME; | |
| Intent intent = new Intent(); | |
| intent.setComponent(componentName); | |
| intent.setAction(Constants.ACTION_LAUNCH_BACKGROUND_SCRIPT); | |
| intent.putExtra(Constants.EXTRA_SCRIPT_PATH, script.getAbsolutePath()); | |
| return intent; | |
| } | |
| /** | |
| * Builds an intent that launches a script in a terminal. | |
| * | |
| * @param script | |
| * the script to launch | |
| * @return the intent that will launch the script | |
| */ | |
| public static Intent buildStartInTerminalIntent(File script) { | |
| final ComponentName componentName = Constants.SL4A_SERVICE_LAUNCHER_COMPONENT_NAME; | |
| Intent intent = new Intent(); | |
| intent.setComponent(componentName); | |
| intent.setAction(Constants.ACTION_LAUNCH_FOREGROUND_SCRIPT); | |
| intent.putExtra(Constants.EXTRA_SCRIPT_PATH, script.getAbsolutePath()); | |
| return intent; | |
| } | |
| /** | |
| * Builds an intent that launches an interpreter. | |
| * | |
| * @param interpreterName | |
| * the interpreter to launch | |
| * @return the intent that will launch the interpreter | |
| */ | |
| public static Intent buildStartInterpreterIntent(String interpreterName) { | |
| final ComponentName componentName = Constants.SL4A_SERVICE_LAUNCHER_COMPONENT_NAME; | |
| Intent intent = new Intent(); | |
| intent.setComponent(componentName); | |
| intent.setAction(Constants.ACTION_LAUNCH_INTERPRETER); | |
| intent.putExtra(Constants.EXTRA_INTERPRETER_NAME, interpreterName); | |
| return intent; | |
| } | |
| /** | |
| * Builds an intent that creates a shortcut to launch the provided interpreter. | |
| * | |
| * @param interpreter | |
| * the interpreter to link to | |
| * @param iconResource | |
| * the icon resource to associate with the shortcut | |
| * @return the intent that will create the shortcut | |
| */ | |
| public static Intent buildInterpreterShortcutIntent(Interpreter interpreter, | |
| Parcelable iconResource) { | |
| Intent intent = new Intent(); | |
| intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, | |
| buildStartInterpreterIntent(interpreter.getName())); | |
| intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, interpreter.getNiceName()); | |
| intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); | |
| return intent; | |
| } | |
| /** | |
| * Builds an intent that creates a shortcut to launch the provided script in the background. | |
| * | |
| * @param script | |
| * the script to link to | |
| * @param iconResource | |
| * the icon resource to associate with the shortcut | |
| * @return the intent that will create the shortcut | |
| */ | |
| public static Intent buildBackgroundShortcutIntent(File script, Parcelable iconResource) { | |
| Intent intent = new Intent(); | |
| intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, buildStartInBackgroundIntent(script)); | |
| intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, script.getName()); | |
| intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); | |
| return intent; | |
| } | |
| /** | |
| * Builds an intent that creates a shortcut to launch the provided script in a terminal. | |
| * | |
| * @param script | |
| * the script to link to | |
| * @param iconResource | |
| * the icon resource to associate with the shortcut | |
| * @return the intent that will create the shortcut | |
| */ | |
| public static Intent buildTerminalShortcutIntent(File script, Parcelable iconResource) { | |
| Intent intent = new Intent(); | |
| intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, buildStartInTerminalIntent(script)); | |
| intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, script.getName()); | |
| intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource); | |
| return intent; | |
| } | |
| /** | |
| * Creates a pending intent that can be used to start the trigger service. | |
| * | |
| * @param context | |
| * the context under whose authority to launch the intent | |
| * | |
| * @return {@link PendingIntent} object for running the trigger service | |
| */ | |
| public static PendingIntent buildTriggerServicePendingIntent(Context context) { | |
| final Intent intent = buildTriggerServiceIntent(); | |
| return PendingIntent.getService(context, EXECUTE_SCRIPT_REQUEST_CODE, intent, | |
| PendingIntent.FLAG_UPDATE_CURRENT); | |
| } | |
| } |