Flutter plugin to listen to the process text intent stream.

Overview

Flutter Process Text Plugin

GitHub GitHub code size in bytes GitHub language count GitHub last commit

Compatibility

  Android
  iOS (active issue: iOS support)

Show some ❤️ and the repo

GitHub followers

Why use Flutter Process Text?

Flutter Process Text Plugin is known for :

Flutter Process Text Flutter Process Text
Fast, performant & compatible Free & Open-source
Production ready Make App Reactive

Features

  Listen process text stream
  Open app from process text intent activity
  Get pending intent text


Demo

App Running App Not Running
App Running AppNotRunning

Quick start

Step 1: Include plugin to your project

dependencies:
  flutter_process_text: <latest version>

Run pub get and get packages.

Step 2: Create a new activity

Add the below code to your AndroidManifest.xml in the android\app\src\main\ folder.

  <activity 
        android:name=".ProcessTextActivity" 
        android:label="Process_Text"
        android:theme="@android:style/Theme.NoDisplay">
          <intent-filter>
              <action android:name="android.intent.action.PROCESS_TEXT" />
              <data android:mimeType="text/plain"/>
              <category android:name="android.intent.category.DEFAULT" />
          </intent-filter>
  </activity>

Note: You may change the android:name from ProcessTextActivity to anything you want. also change the android:label from Process_Text to the process action text that you want to display.

Step 3: Create new activity class

Create a new Java/Kotlin file with the same name as android:name in step 2.

Copy the below code and paste in the newly created file.

package com.divyanshushekhar.flutter_process_text_example;

import com.divyanshushekhar.flutter_process_text.FlutterProcessTextPlugin;
import io.flutter.embedding.android.FlutterActivity;
import android.os.Bundle;

public class ProcessTextActivity extends FlutterActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        boolean issAppRunning = MainActivity.getIsAppRunning();
        FlutterProcessTextPlugin.listenProcessTextIntent(issAppRunning);
    }
}

Note: Don't forget to change the package name in the above code.

Step 4: Changes in MainActivity

Make the necessary changes in the MainActivity class.

package com.divyanshushekhar.flutter_process_text_example;

import io.flutter.embedding.android.FlutterActivity;

import android.app.ActivityManager;
import android.content.Context;
import android.os.Bundle;
import java.util.List;

public class MainActivity extends FlutterActivity {
   private static boolean isAppRunning;

   public static boolean getIsAppRunning() {
     return isAppRunning;
   }

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
        isAppRunning = isAppRunning(this);
   }

    public static boolean isAppRunning(Context context) {
        final String packageName = context.getPackageName();
        final ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        final List<ActivityManager.RunningAppProcessInfo> processInfo = activityManager.getRunningAppProcesses();
        if (processInfo != null)
        {
            for (final ActivityManager.RunningAppProcessInfo info : processInfo) {
                if (info.processName.equals(packageName)) {
                    return true;
                }
            }
        }
        return false;
    }
}

Step 5: Connect to flutter

First thing you need to do is to call the initialize method from the FlutterProcessText class in the initState() {} of the page.

FlutterProcessText.initialize();

OR

FlutterProcessText.initialize(
    showConfirmationToast: true,
    showRefreshToast: true,
    showErrorToast: true,
    confirmationMessage: "Text Added",
    refreshMessage: "Got all Text",
    errorMessage: "Some Error",
);

Step 6: Working with stream

There are two ways to work with stream, either create a StreamSubscription to listen for the incoming data or store the Stream and use it in StreamBuilder.

  late final StreamSubscription _processText;
  String text? = '';

  @override
  void initState() {
    super.initState();
    FlutterProcessText.initialize(
      showToast: true,
      confirmationMessage: "Text Added",
      refreshMessage: "Got all Text",
      errorMessage: "Some Error",
    );

    _processText = FlutterProcessText.getProcessTextStream.listen((event) {
      setState(() {
        text = event;
      });
    });
  }

  @override
  void dispose() {
    super.dispose();
    _processText.cancel();
  }

OR

late final Stream<String> _processText;
_processText = FlutterProcessText.getProcessTextStream;

Now use the stream in the StreamBuilder.

StreamBuilder<String?>(
  stream: _processText,
  builder: (context, snapshot) {
    return Text('Fetched Data: ${snapshot.data}');
  },
),

Get pending data

Get the pending data by calling the refreshProcessText method in FlutterProcessText class.

String? text = await FlutterProcessText.refreshProcessText;

Project Created & Maintained By

Divyanshu Shekhar

Copyright & License

Code and documentation Copyright (c) 2021 Divyanshu Shekhar. Code released under the BSD 3-Clause License.

You might also like...

HopLa Burp Suite Extender plugin - Adds autocompletion support and useful payloads in Burp Suite

 HopLa Burp Suite Extender plugin -  Adds autocompletion support and useful payloads in Burp Suite

HopLa 💥 All the power of PayloadsAllTheThings, without the overhead. This extension adds autocompletion support and useful payloads in Burp Suite to

Dec 24, 2022

AspectJ Maven Plugin

AspectJ Maven Plugin Overview This plugin weaves AspectJ aspects into your classes using the AspectJ compiler ajc. Typically, aspects are used in one

Dec 9, 2022

Ask and replay plugin for Mirai-Console

Ask and replay plugin for Mirai-Console

EntryLib EntryLib 是一个基于 Mirai-Console 的插件,用于实现群词条、自定义回复或更多功能。 目录 声明 使用方法 基本指令列表 额外说明 配置项 控制台 数据库结构 To-Do List 插件依赖 声明 本插件仅作为学习交流等使用,请勿用于盈利,否则法律后果自负。 欢

Oct 25, 2022

This simple Android Studio plugin includes keyboard shortcuts for many common actions.

This simple Android Studio plugin includes keyboard shortcuts for many common actions.

Hotkeys This simple Android Studio plugin includes keyboard shortcuts for many common actions. Features • Build process • Contribute • License Feature

Apr 26, 2022

A simple but helpful fight plugin with rank support

RankFight A simple but helpful fight plugin with rank support HighLights PlceholderAPI Support %rankfight_rank% %rankfight_credit% %rankfight_shopCred

Nov 20, 2021

Ghidra Wasm plugin with disassembly and decompilation support

Ghidra Wasm plugin with disassembly and decompilation support

Module to load WebAssembly files into Ghidra, supporting disassembly and decompilation. This plugin borrows loader functionality from this repo: https

Nov 22, 2022

The best plugin to protect anarchy servers and mc servers in general against op attacks.

AdminSecure The best plugin to protect anarchy servers and mc servers in general against op attacks How does it work? When the server detects a player

Sep 2, 2021

Source code of Trend's Manhunt plugin

Trend's Manhunt This is the official repository of my Manhunt plugin. Contribution You are allowed to contribute, but NOT to yoink all of my plugin co

Oct 19, 2022

GMC-Tools - Plugin with basic tools for Minecraft server administrator

GMC-Tools - Plugin with basic tools for Minecraft server administrator. Currently we do not support configuration files and we do not recommend using this plugin on production servers.

Jan 14, 2022
Comments
  • Open app instead of showing toast

    Open app instead of showing toast

    This is almost what I need. I can't get the action_process_text package to work because I use my own method channels in my MainActivity, so if I use that I would get MissingPluginException and so on. This works, but it shows a toast instead of opening the app. Is there a way I can have the app open to a screen instead of showing a toast with this plugin?

    question 
    opened by lrorpilla 1
  • Java/Kotlin files

    Java/Kotlin files

    Hi, when I add the ProcessTextActivity.kt file (with altered package name) and modify the MainActivity.kt I start getting a lot of errors that prevent the build from happening:

    Launching lib\main.dart on M2102J20SG in debug mode... e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (10, 14): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (10, 21): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (10, 29): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (12, 11): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (12, 18): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (12, 26): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (12, 41): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (12, 42): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (12, 44): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (12, 44): Conflicting overloads: public final fun (): Unit defined in com.pablolavin.mnemonic.MainActivity, public final fun (): Unit defined in com.pablolavin.mnemonic.MainActivity, public final fun (): Unit defined in com.pablolavin.mnemonic.MainActivity e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (12, 44): Function declaration must have a name e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (17, 11): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (17, 16): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (17, 24): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (17, 25): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (17, 32): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (17, 50): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (17, 52): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (17, 52): Conflicting overloads: public final fun (): Unit defined in com.pablolavin.mnemonic.MainActivity, public final fun (): Unit defined in com.pablolavin.mnemonic.MainActivity, public final fun (): Unit defined in com.pablolavin.mnemonic.MainActivity e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (17, 52): Function declaration must have a name e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 12): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 19): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 27): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 39): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 40): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 48): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 55): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 57): Expecting member declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 57): Conflicting overloads: public final fun (): Unit defined in com.pablolavin.mnemonic.MainActivity, public final fun (): Unit defined in com.pablolavin.mnemonic.MainActivity, public final fun (): Unit defined in com.pablolavin.mnemonic.MainActivity e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (22, 57): Function declaration must have a name e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (24, 74): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (25, 19): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (25, 35): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (25, 57): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (25, 71): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (25, 88): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (25, 112): Expecting an expression e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (28, 39): Expecting 'in' e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (28, 40): Expecting ')' e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (28, 40): Unresolved reference: RunningAppProcessInfo e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (28, 67): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (28, 80): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (28, 80): Unexpected tokens (use ';' to separate expressions on the same line) e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (13, 13): Unresolved reference: isAppRunning e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (18, 23): Unresolved reference: savedInstanceState e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (19, 9): Unresolved reference: isAppRunning e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (19, 24): Unresolved reference: isAppRunning e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (23, 9): Unresolved reference: final e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (23, 9): Variable expected e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (24, 9): Unresolved reference: final e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (24, 9): Variable expected e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (24, 31): Unresolved reference: activityManager e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (24, 50): Classifier 'ActivityManager' does not have a companion object, and thus must be initialized here e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (25, 9): Unresolved reference: final e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (26, 13): Unresolved reference: processInfo e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (28, 18): Modifier 'final' is not applicable to 'value parameter' e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (29, 21): Unresolved reference: info e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (30, 21): 'return' is not allowed here e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (30, 28): The boolean literal does not conform to the expected type Unit e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\MainActivity.kt: (34, 16): The boolean literal does not conform to the expected type Unit e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (7, 34): Expecting a top level declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (7, 42): Expecting a top level declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (7, 58): Expecting a top level declaration e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (7, 58): Function declaration must have a name e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (10, 51): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (12, 31): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (12, 45): Expecting an element e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (12, 62): Expecting an expression e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (9, 5): This annotation is not applicable to target 'expression' e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (10, 5): Unresolved reference: public e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (10, 17): Unresolved reference: onCreate e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (10, 26): Classifier 'Bundle' does not have a companion object, and thus must be initialized here e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (11, 9): No supertypes are accessible in this context e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (11, 24): Unresolved reference: savedInstanceState e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (12, 9): Unresolved reference: boolean e: C:\AppFlutter\mnemonic\android\app\src\main\kotlin\com\pablolavin\mnemonic\ProcessTextActivity.kt: (13, 58): Unresolved reference: issAppRunning

    All of these seem to be syntax errors, what's going on?

    opened by PabloLavin 0
Releases(v1.1.2)
Googleads-mobile-flutter - A Flutter plugin for the Google Mobile Ads SDK

Google Mobile Ads for Flutter This repository contains the source code for the Google Mobile Ads Flutter plugin, which enables publishers to monetize

Google Ads 251 Jan 2, 2023
Intent traffic monitoring tool.

XIntent An Intent traffic monitoring tool. Purpose App security testing or bug hunting. Intent IPC mechanism learning. App keep-alive behavior monitor

rick7 40 Dec 1, 2022
A Flutter plugin to extract waveform data from an audio file suitable for visual rendering.

just_waveform This plugin extracts waveform data from an audio file that can be used to render waveform visualisations. Usage final progressStream = J

null 53 Dec 4, 2022
🔥🔥🔥 Flutter 广告插件 -- 腾讯广告、广点通、优量汇 (支持开屏、插屏、激励视频、Banner)

一款优质的 Flutter 广告插件(腾讯广告、广点通、优量汇) 插件特点 ?? 接入简单快速(封装原生端配置,仅需引入即可开始) ?? 事件统一返回(将原生端各种重要回调事件统一返回,方便业务处理和埋点统计等需求) ?? 注重优化体验(无闪烁 Logo 开屏、权限申请、隐私跟踪申请等) ?? 极客

null 86 Jan 5, 2023
Plugin-fineagent - A plugin for the ja-netfilter, it allows you to use fineagent in ja-netfilter.

plugin-fineagent A plugin for the ja-netfilter, it allows you to use fineagent in ja-netfilter. Use the mvn clean package command to compile and use F

null 19 Jun 25, 2022
:package: Gradle/Maven plugin to package Java applications as native Windows, Mac OS X, or GNU/Linux executables and create installers for them.

JavaPackager JavaPackager is a hybrid plugin for Maven and Gradle which provides an easy way to package Java applications in native Windows, Mac OS X

Francisco Vargas Ruiz 665 Jan 8, 2023
maven plugin for making chmod +x jar files

To use it, add a plugin to your pom like <!-- You need to build an exectuable uberjar, I like Shade for that --> <plugin> <groupId>org.apache.mave

Brian McCallister 113 Dec 8, 2022
Launch4j Maven Plugin

Launch4j Maven Plugin

Lukasz Lenart 301 Dec 29, 2022
A BurpSuite plugin for BBRF

bbrf-burp-plugin What's BBRF? The Bug Bounty Reconnaissance Framework (BBRF) is intended to facilitate the workflows of security researchers across mu

Pieter 19 Jun 22, 2022
Maven plugin to help creating CHANGELOG by keeping one format and solving merge request conflicts problem by extraction of new CHANGELOG entries to seperate files.

keep-changelog-maven-plugin CHANGELOG.md is one of the most important files in a repository. It allows others to find out about the most important cha

Piotr Zmilczak 22 Aug 28, 2022