Site icon Flutter Packages | Pub dev Packages – Flutter Mobile App World

Flutter plugin to deal with Android Intents

intent

A simple flutter plugin to deal with Android Intents – your one stop solution for Android Intents, written with .

Show some  by putting 

intent tries to help you in launching another android activity using Android Intents. This Dart API replicates Android Intent API, so for detailed information on how to use it efficiently, when to send what kind of data, you may be interested in taking a look here. Which explains things more elaborately.

intent is readily available for use.

Now publisher account’s verified

Resolves long requested name conflict issue, for multiple applications on same device

what does it do ?

how to use it ?

Well make sure, you include intent in your pubspec.yaml.

Define a Term :

Intent()
        ..setAction(Action.ACTION_DEFINE)
        ..putExtra(Extra.EXTRA_TEXT, "json")
        ..startActivity().catchError((e) => print(e));

Show Desired Application Info :

Make sure you address app using its unique package id.

Intent()
        ..setAction(Action.ACTION_SHOW_APP_INFO)
        ..putExtra(Extra.EXTRA_PACKAGE_NAME, "com.whatsapp")
        ..startActivity().catchError((e) => print(e));

Show Application Preference Activity :

Intent()
        ..setAction(Action.ACTION_APPLICATION_PREFERENCES)
        ..startActivity().catchError((e) => print(e));

Launch Application Error Reporting Activity :

Intent()
        ..setAction(Action.ACTION_APP_ERROR)
        ..startActivity().catchError((e) => print(e));

Launch Default Assist Activity :

Intent()
        ..setAction(Action.ACTION_ASSIST)
        ..startActivity().catchError((e) => print(e));

Report Bug :

Intent()
        ..setAction(Action.ACTION_BUG_REPORT)
        ..startActivity().catchError((e) => print(e));

View a URI :

Which activity to be launched, depends upon type of URI passed.

In case of passing tel URI, opens dialer up.

Intent()
        ..setAction(Action.ACTION_VIEW)
        ..setData(Uri(scheme: "tel", path: "123"))
        ..startActivity().catchError((e) => print(e));

If you pass a mailto URI, it’ll open email app.

Intent()
        ..setAction(Action.ACTION_VIEW)
        ..setData(Uri(scheme: "mailto", path: "someone@example.com"))
        ..startActivity().catchError((e) => print(e));

In case of httphttps URI, opens browser up.

Intent()
        ..setAction(Action.ACTION_VIEW)
        ..setData(Uri(scheme: "https", host:"google.com"))
        ..startActivity().catchError((e) => print(e));

Dial a Number using Default Dial Activity :

Setting data using tel URI, will open dialer, number as input.

Intent()
        ..setAction(Action.ACTION_DIAL)
        ..setData(Uri(scheme: 'tel', path: '121'))
        ..startActivity().catchError((e) => print(e));

But if you’re interested in opening dialer without any numbers dialer, make sure you don’t set data field.

Intent()
        ..setAction(Action.ACTION_DIAL)
        ..startActivity().catchError((e) => print(e));

Calling a Number :

You can simply call a number, but make sure you’ve necessary permissions to do so.

Intent()
        ..setAction(Action.ACTION_CALL)
        ..setData(Uri(scheme: 'tel', path: '121'))
        ..startActivity().catchError((e) => print(e));

It’ll always be a wise decision to use ACTION_DIAL, because that won’t require any kind of permissions.

Create Precomposed Email :

Intent()
        ..setPackage("com.google.android.gm")
        ..setAction(Action.ACTION_SEND);
        ..setType("message/rfc822");
        ..putExtra(Extra.EXTRA_EMAIL, ["john.doe@exampleemail.com"]);
        ..putExtra(Extra.EXTRA_CC, ["jane.doe@exampleemail.com"]);
        ..putExtra(Extra.EXTRA_SUBJECT, "Foo bar");
        ..putExtra(Extra.EXTRA_TEXT, "Lorem ipsum");
        ..startActivity().catchError((e) => print(e));

Create a Document :

Content type of document is set text/plain, category is CATEGORY_OPENABLE and file name is passed as an extra i.e. EXTRA_TITLE.

Intent()
        ..setAction(Action.ACTION_CREATE_DOCUMENT)
        ..setType("text/plain")
        ..addCategory(Category.CATEGORY_OPENABLE)
        ..putExtra(Extra.EXTRA_TITLE, "test.txt")
        ..startActivity().catchError((e) => print(e));

You can also set path of file using data field. But make sure data field is a valid path URI.

Edit Document :

You can edit image/ text or any other kind of data using appropriate activity.

Intent()
        ..setAction(Action.ACTION_EDIT)
        ..setData(Uri(scheme: 'content',
                path:
                'path-to-image'))
        ..setType('image/*')
        ..startActivity().catchError((e) => print(e));

Add a Contact to your Contact Database :

Intent()
        ..setAction('com.android.contacts.action.SHOW_OR_CREATE_CONTACT')
        ..setData(Uri(scheme: 'tel', path: '1234567890'))
        ..startActivity().catchError((e) => print(e));

Search for a Term :

Opens up a list of eligible candidates, which can provides search activity.

Intent()
        ..setAction(Action.ACTION_SEARCH)
        ..putExtra(Extra.EXTRA_TEXT, 'json')
        ..startActivity().catchError((e) => print(e));

Share Text/ Media :

Make sure you’ve set appropriate path URI for sharing documents/ media using EXTRA_STREAM and also set type properly.

Following one will share a plain text. For sharing html formatted text, set type to text/html.

Intent()
        ..setAction(Action.ACTION_SEND)
        ..setType('text/plain')
        ..putExtra(Extra.EXTRA_TEXT, 'json')
        ..startActivity().catchError((e) => print(e));

But if you’re interested in creating a chooser i.e. all eligible candidates shown up system, which can handle this intent, make sure you set createChooser named parameter to true, which is by default false.

Send Email to certain ID while setting Content and CC/ BCC :

Intent()
        ..setAction(Action.ACTION_SENDTO)
        ..setData(Uri(scheme: 'mailto', path: 'anjanroy@yandex.com'))
        ..putExtra(Extra.EXTRA_CC, ['someone@example.com'])
        ..putExtra(Extra.EXTRA_TEXT, 'Hello World')
        ..startActivity().catchError((e) => print(e));

Translate a Text using default Assist Activity :

Intent()
        ..setAction(Action.ACTION_TRANSLATE)
        ..putExtra(Extra.EXTRA_TEXT, "I Love Computers")
        ..startActivity().catchError((e) => print(e));

Pick a Contact up from Phone :

        Intent()
                ..setAction(Action.ACTION_PICK)
                ..setData(Uri.parse('content://contacts'))
                ..setType("vnd.android.cursor.dir/phone_v2")
                ..startActivityForResult().then((data) => print(data),
                onError: (e) => print(e));

Capture Image using default Camera activity :

Path to captured image can be grabbed from Intent().startActivityForResult().then(() { ... } ), which will be provided in form of List<String>, open file using that path, File(data[0]). Now you can work on that image file.

        Intent()
                ..setAction(Action.ACTION_IMAGE_CAPTURE)
                ..startActivityForResult().then((data) => print(data[0]), // gets you path to image captured
                onError: (e) => print(e));

If you’re not interested in showing default activity launch animation, set following flag.

Intent()..addFlag(Flag.FLAG_ACTIVITY_NO_ANIMATION);

If you don’t want this activity to be displayed in recents, set following flag.

Intent()..addFlag(Flag.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);

If you request for certain Activity and no eligible candidate was found, you’ll receive one error message, which you can listen for using Future.catchError((e) {},) method.

PlatformException(Error, android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SYSTEM_TUTORIAL }, null)

Currently a limited number of Actions are provided in Action class, but you can always use a string constant as an Action, which will help you in dealing with many more Activities.

Download Flutter Intents Plugin Source code on GitHub

https://github.com/itzmeanjan/intent

Exit mobile version