import { Injectable } from '@angular/core'; import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core'; import { Observable } from 'rxjs/Observable'; export interface IntentClipItem { uri: string; type?: string; extension?: string; } export interface Intent { action: string; clipItems: IntentClipItem[]; component: string; extras: object; flags: number; type: string; } export interface RegisterBroadcastReceiverOptions { filterActions?: string[]; filterCategories?: string[]; filterDataSchemes?: string[]; } export interface IntentOptions { requestCode?: number; type?: string; package?: string; url?: string; extras?: object; action?: string; component?: { package: string; class: string; }; flags?: number[]; } /** * @name Web Intent * @description * This Plugin provides a general purpose shim layer for the Android intent mechanism, exposing various ways to handle sending and receiving intents. * @usage * For usage information please refer to the plugin's Github repo. * * ```typescript * import { WebIntent } from '@ionic-native/web-intent'; * * constructor(private webIntent: WebIntent) { } * * ... * * const options = { * action: this.webIntent.ACTION_VIEW, * url: 'path/to/file', * type: 'application/vnd.android.package-archive' * }; * * this.webIntent.startActivity(options).then(onSuccess, onError); * * ``` * @interfaces * IntentOptions */ @Plugin({ pluginName: 'WebIntent', plugin: 'com-darryncampbell-cordova-plugin-intent', pluginRef: 'plugins.intentShim', repo: 'https://github.com/darryncampbell/darryncampbell-cordova-plugin-intent', platforms: ['Android'] }) @Injectable() export class WebIntent extends IonicNativePlugin { /** * Convenience constant for actions * @type {string} */ @CordovaProperty ACTION_SEND: string; /** * Convenience constant for actions * @type {string} */ @CordovaProperty ACTION_VIEW: string; /** * Convenience constant for extras * @type {string} */ @CordovaProperty EXTRA_TEXT: string; /** * Convenience constant for extras * @type {string} */ @CordovaProperty EXTRA_SUBJECT: string; /** * Convenience constant for extras * @type {string} */ @CordovaProperty EXTRA_STREAM: string; /** * Convenience constant for extras * @type {string} */ @CordovaProperty EXTRA_EMAIL: string; /** * Convenience constant for actions * @type {string} */ @CordovaProperty ACTION_CALL: string; /** * Convenience constant for actions * @type {string} */ @CordovaProperty ACTION_SENDTO: string; /** * Convenience constant for actions * @type {string} */ @CordovaProperty ACTION_GET_CONTENT: string; /** * Convenience constant for actions * @type {string} */ @CordovaProperty ACTION_PICK: string; /** * Convenience constant for actions * @type {string} */ @CordovaProperty ACTION_INSTALL_PACKAGE: string; /** * Convenience constant for actions * @type {string} */ @CordovaProperty ACTION_UNINSTALL_PACKAGE: string; /** * Launches an Android intent * @param options {IntentOptions} * @returns {Promise} */ @Cordova() startActivity(options: IntentOptions): Promise { return; } /** * Starts a new activity and return the result to the application * @param options {IntentOptions} * @returns {Promise} */ @Cordova() startActivityForResult(options: IntentOptions): Promise { return; } /** * Checks if this app was invoked with specified extra * @param extra {string} * @returns {Promise} */ @Cordova() hasExtra(extra: string): Promise { return; } /** * Gets the extra that this app was invoked with * @param extra {string} * @returns {Promise} */ @Cordova() getExtra(extra: string): Promise { return; } /** * Gets the Uri the app was invoked with * @returns {Promise} */ @Cordova() getUri(): Promise { return; } /** * Returns the content of the intent used whenever the application activity is launched * @returns {Observable} */ @Cordova({ observable: true }) onIntent(): Observable { return; } /** * Sends a custom intent passing optional extras * @param options {IntentOptions} * @returns {Promise} */ @Cordova() sendBroadcast(options: IntentOptions): Promise { return; } /** * Request that a given application service be started * @param options {IntentOptions} * @returns {Promise} */ @Cordova() startService(options: IntentOptions): Promise { return; } /** * Registers a broadcast receiver for the specified filters * @param filters {RegisterBroadcastReceiverOptions} * @returns {Observable} */ @Cordova({ observable: true }) registerBroadcastReceiver(filters: RegisterBroadcastReceiverOptions): Observable { return; } /** * Unregisters a broadcast receiver */ @Cordova({ sync: true }) unregisterBroadcastReceiver(): void {} /** * @returns {Promise} */ @Cordova() getIntent(): Promise { return; } /** * Send a result back to the Intent that started this Activity. * The data can be passed using 'extras'. * @returns {Promise} */ @Cordova() sendResult({ extras: {} }): Promise { return; } }