| /* |
| * 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); |
| } |
| } |