Neural Processing Mechanisms

    com-darryncampbell-cordova-plugin-intent

    2.2.0 • Public • Published

    Please be aware that this application / sample is provided as-is for demonstration purposes without any guarantee of support

    npm version npm downloads npm downloads npm licence

    Note: this is the current underlying implementation for https://www.npmjs.com/package/@ionic-native/web-intent and https://ionicframework.com/docs/native/web-intent/

    Android X support

    • For Android X Support please use version >= 2.x.x
    • For Android Support Library please use version 1.3.x

    Interaction with Camera Plugin

    If you are installing this plugin along with cordova-plugin-camera you MUST install cordova-plugin-camera first.

    Overview

    This Cordova plugin provides a general purpose shim layer for the Android intent mechanism, exposing various ways to handle sending and receiving intents.

    Credits

    This project uses code released under the following MIT projects:

    IntentShim

    This plugin defines a window.plugins.intentShim object which provides an API for interacting with the Android intent mechanism on any Android device.

    Testing / Example

    An example application is available at https://github.com/darryncampbell/plugin-intent-api-exerciser to demonstrate the API and can be used to test the functionality.

    Installation

    Cordova Version < 7

    cordova plugin add https://github.com/darryncampbell/darryncampbell-cordova-plugin-intent.git
    

    Cordova Version >= 7

    cordova plugin add com-darryncampbell-cordova-plugin-intent
    

    Use with PhoneGap

    Please use the latest PhoneGap cli when including this plugin, please refer to Issue 63 for context.

    Supported Platforms

    • Android

    intentShim.registerBroadcastReceiver

    Registers a broadcast receiver for the specified filters

    window.plugins.intentShim.registerBroadcastReceiver(filters, callback);
    

    Description

    The intentShim.registerBroadcastReceiver function registers a dynamic broadcast receiver for the specified list of filters and invokes the specified callback when any of those filters are received

    Example

    Register a broadcast receiver for two filters:

    window.plugins.intentShim.registerBroadcastReceiver({
        filterActions: [
            'com.darryncampbell.cordova.plugin.broadcastIntent.ACTION',
            'com.darryncampbell.cordova.plugin.broadcastIntent.ACTION_2'
            ]
        },
        function(intent) {
            console.log('Received broadcast intent: ' + JSON.stringify(intent.extras));
        }
    );
    

    intentShim.unregisterBroadcastReceiver

    Unregisters any BroadcastRecivers

    window.plugins.intentShim.unregisterBroadcastReceiver();
    

    Description

    The intentShim.unregisterBroadcastReceiver function unregisters all broadcast receivers registered with intentShim.registerBroadcastReceiver(filters, callback);. No further broadcasts will be received for any registered filter after this call.

    Android Quirks

    The developer is responsible for calling unregister / register when their application goes into the background or comes back to the foreground, if desired.

    Example

    Unregister the broadcast receiver when the application receives an onPause event:

    bindEvents: function() {
        document.addEventListener('pause', this.onPause, false);
    },
    onPause: function()
    {
        window.plugins.intentShim.unregisterBroadcastReceiver();
    }
    

    intentShim.sendBroadcast

    Sends a broadcast intent

    window.plugins.intentShim.sendBroadcast(action, extras, successCallback, failureCallback);
    

    Description

    The intentShim.sendBroadcast function sends an Android broadcast intent with a specified action

    Example

    Send a broadcast intent to a specified action that contains a random number in the extras

    window.plugins.intentShim.startActivity(
        {
            action: "com.darryncampbell.cordova.plugin.intent.ACTION",
            extras: {
                    'random.number': Math.floor((Math.random() * 1000) + 1)
            }
        },
        function() {},
        function() {alert('Failed to open URL via Android Intent')}
    );
    

    intentShim.onIntent

    Returns the content of the intent used whenever the application activity is launched

    window.plugins.intentShim.onIntent(callback);
    

    Description

    The intentShim.onIntent function returns the intent which launched the Activity and maps to the Android Activity's onNewIntent() method, https://developer.android.com/reference/android/app/Activity.html#onNewIntent(android.content.Intent). The registered callback is invoked whenever the activity is launched

    Android Quirks

    By default the android application will be created with launch mode set to 'SingleTop'. If you wish to change this to 'SingleTask' you can do so by modifying config.xml as follows:

    <platform name="android">
        ...
        <preference name="AndroidLaunchMode" value="singleTask"/>
    </platform>
    

    See https://www.mobomo.com/2011/06/android-understanding-activity-launchmode/ for more information on the differences between the two.

    Example

    Registers a callback to be invoked

    window.plugins.intentShim.onIntent(function (intent) {
        console.log('Received Intent: ' + JSON.stringify(intent.extras));
    });
    

    intentShim.startActivity

    Starts a new activity using an intent built from action, url, type, extras or some subset of those parameters

    window.plugins.intentShim.startActivity(params, successCallback, failureCallback);
    

    Description

    The intentShim.startActivity function maps to Android's activity method startActivity, https://developer.android.com/reference/android/app/Activity.html#startActivity(android.content.Intent) to launch a new activity.

    Android Quirks

    Some common actions are defined as constants in the plugin, see below.

    Examples

    Launch the maps activity

    window.plugins.intentShim.startActivity(
    {
        action: window.plugins.intentShim.ACTION_VIEW,
        url: 'geo:0,0?q=London'
    },
    function() {},
    function() {alert('Failed to open URL via Android Intent')}
    );
    

    Launch the web browser

    window.plugins.intentShim.startActivity(
    {
        action: window.plugins.intentShim.ACTION_VIEW,
        url: 'http://www.google.co.uk'
    },
    function() {},
    function() {alert('Failed to open URL via Android Intent')}
    );
    

    intentShim.getIntent

    Retrieves the intent that launched the activity

    window.plugins.intentShim.getIntent(resultCallback, failureCallback);
    

    Description

    The intentShim.getIntent function maps to Android's activity method getIntent, https://developer.android.com/reference/android/app/Activity.html#getIntent() to return the intent that started this activity.

    Example

    window.plugins.intentShim.getIntent(
        function(intent)
        {
            console.log('Action' + JSON.stringify(intent.action));
            var intentExtras = intent.extras;
            if (intentExtras == null)
                intentExtras = "No extras in intent";
            console.log('Launch Intent Extras: ' + JSON.stringify(intentExtras));
        },
        function()
        {
            console.log('Error getting launch intent');
        });
    

    intentShim.startActivityForResult

    Starts a new activity and return the result to the application

    window.plugins.intentShim.startActivityForResult(params, resultCallback, failureCallback);
    

    Description

    The intentShim.startActivityForResult function maps to Android's activity method startActivityForResult, https://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent, int) to launch a new activity and the resulting data is returned via the resultCallback.

    Android Quirks

    Some common actions are defined as constants in the plugin, see below.

    Example

    Pick an Android contact

    window.plugins.intentShim.startActivityForResult(
    {
        action: window.plugins.intentShim.ACTION_PICK,
        url: "content://com.android.contacts/contacts",
        requestCode: 1
    },
    function(intent)
    {
        if (intent.extras.requestCode == 1)
        {
            console.log('Picked contact: ' + intent.data);
        }
    },
    function()
    {
        console.log("StartActivityForResult failure");
    });
    

    intentShim.sendResult

    Assuming this application was started with intentShim.startActivityForResult, send a result back

    window.plugins.intentShim.sendResult(args, callback);
    

    Description

    The intentShim.sendResult function returns an Activity.RESULT_OK Intent to the activity that started this application, along with any extras that you want to send along (as args.extras object), and a callback function. It then calls Android Activity's finish() method, https://developer.android.com/reference/android/app/Activity.html#finish().

    Android Quirks

    Both args and callback arguments have to be provided. If you do not need the functionality, send an empty object and an empty function

    window.plugins.intentShim.sendResult({}, function() {});
    

    Example

    window.plugins.intentShim.sendResult(
        {
            extras: {
                'Test Intent': 'Successfully sent',
                'Test Intent int': 42,
                'Test Intent bool': true,
                'Test Intent double': parseFloat("142.12")
            }
        },
        function() {
        
        }
    );
    

    intentShim.packageExists

    Returns a boolean indicating if a specific package is installed on the device.

    window.plugins.intentShim.packageExists(packageName, callback);

    Description

    The intentShim.packageExists function returns a boolean indicating if a specific package is installed on the current device.

    Example

    const packageName = 'com.android.contacts';
    
    window.plugins.intentShim.packageExists(packageName, (exists) => {
        if (exists) {
            console.log(`${packageName} exists!`);
        } else {
            console.log(`${packageName} does not exist...`);
        }
    });

    Predefined Constants

    The following constants are defined in the plugin for use in JavaScript

    • window.plugins.intentShim.ACTION_SEND
    • window.plugins.intentShim.ACTION_VIEW
    • window.plugins.intentShim.EXTRA_TEXT
    • window.plugins.intentShim.EXTRA_SUBJECT
    • window.plugins.intentShim.EXTRA_STREAM
    • window.plugins.intentShim.EXTRA_EMAIL
    • window.plugins.intentShim.ACTION_CALL
    • window.plugins.intentShim.ACTION_SENDTO
    • window.plugins.intentShim.ACTION_GET_CONTENT
    • window.plugins.intentShim.ACTION_PICK

    Tested Versions

    Tested with Cordova version 6.5.0 and Cordova Android version 6.2.1

    Install

    npm i com-darryncampbell-cordova-plugin-intent

    DownloadsWeekly Downloads

    3,425

    Version

    2.2.0

    License

    MIT

    Unpacked Size

    61 kB

    Total Files

    9

    Last publish

    Collaborators

    • darryncampbell