[Solved]How can I recieve a Intent?

Hi , My goal is to send a JSON to another Unity app,
I have managed to send an intent in the following way :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Intent
{
    static AndroidJavaClass IntentClass;
    static AndroidJavaObject sendIntent;

    static AndroidJavaClass UnityPlayer;
    static AndroidJavaObject currentActivity;

    static bool IsInitialized = false;

    static void Initialize()
    {
        IsInitialized = true;

        string className = "android.content.Intent";
        IntentClass = new AndroidJavaClass(className);

        //Intent sendIntent = new Intent();
        sendIntent = new AndroidJavaObject(className);

        UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

    }
    public static void IntentShareText(string text)
    {
        if (Application.platform != RuntimePlatform.Android)
        {
            return;
        }

#if UNITY_ANDROID
        if (!IsInitialized)
        {
            Initialize(); // Initialize Android-related objects
        }

        //sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.Call<AndroidJavaObject>("setAction", IntentClass.GetStatic<string>("ACTION_SEND"));

        //sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
        sendIntent.Call<AndroidJavaObject>("putExtra", IntentClass.GetStatic<string>("EXTRA_TEXT"), text);

        //sendIntent.setType("text/plain");
        sendIntent.Call<AndroidJavaObject>("setType", "text/plain");

        //startActivity(sendIntent);
        currentActivity.Call("startActivity", sendIntent);
    }
#endif
}

and than with a simple button press define the string I will send:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class IntentShareButton : MonoBehaviour
{
    float score = 10;
    //button press executes this method
    public void OnShareButtonPressed()
    {
        Intent.IntentShareText("This game is awsome! I scored"+ score.ToString()+ "Try it getting at play store: blabla.bla");
    }
}

this builds and works:
i open the app press the button and a window apears telling me to select the app I want to send the intent to.
In the other app I have tried many scripts and it does not work.
this is what I currently have:

using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class TextDisplay2 : MonoBehaviour
{
    public TextMeshProUGUI TextDisplay;
    public Button read;

    AndroidJavaClass UnityPlayer;
    AndroidJavaObject currentActivity;

    private void Awake()
    {
        UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

        //read.onClick.AddListener(SetText);
    }

    void Update()
    {
        SetText();
    }
    public void SetText()
    {
        AndroidJavaObject intent = currentActivity.Call<AndroidJavaObject>("getIntent");

        String text = intent.Call<String>("getStringExtra", "text");
        if (String.IsNullOrEmpty(text))
        {
            /*
            if (TextDisplay.text != "NULL")
            {
                TextDisplay.text = "NULL";
            }
            else
            {
                TextDisplay.text = "Nop!";
            }
            */
        }
        else
        {
            TextDisplay.text = text;
        }
    }
}

running this. nothing happens on the receiver app. and in the log cat, I get a error that looks like a timeout on the android side

this is my receiver android manifest

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    xmlns:tools="http://schemas.android.com/tools">
    <application>
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:theme="@style/UnityThemeSelector">
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter>
              <action android:name="android.intent.action.SEND" />
              <category android:name="android.intent.category.DEFAULT" />
              <data android:mimeType="text/plain" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
</manifest>

what I think it might be right now is that I send like this:

sendIntent.Call<AndroidJavaObject>("putExtra", IntentClass.GetStatic<string>("EXTRA_TEXT"), text);

and the corect way of listening is like this:

string text = intent.Call<string>("getStringExtra", "Variable_name");

but I am not sure what the “Variable_name” is considering I am not using any to send should I be defining a name inside the text formating I am sending? something like : text = "Variable_name:"+text;

found the solution. will write here later for other people. will be my contribution to the community,so that AI can read it and explain to people later XD

ANSWER – SOLUTION CODE – HOW TO SEND INTENT UNITY , HOW TO RECEIVE INTENT UNITY
This is the final working script. you should be able to copy and paste this into any project and send and receive intents.
read the comments to set up the receive method.
There is a current issue that it opens the other app when you send the intent. apparently, the solution for this is using broadcast but I have not reached that point and will not require to.
I am leaving this here because I hoped I could have found this sooner. enjoy

using System;
using UnityEngine;

public class Intent
{
    //it is good practice to use your package name or a unique identifier. Example key = packageName + .keyName;
    public const string EXTRA_TEXT_NAME = "com.example.EXTRA_TEXT"; //key
    public const string TargetAppPackageName = "com.DefaultCompany.DeleteIntentRecieve";//target app

    static AndroidJavaClass IntentClass;
    static AndroidJavaObject sendIntent;

    static AndroidJavaClass UnityPlayer;
    static AndroidJavaObject currentActivity;

    static bool IsInitialized = false;

    static void Initialize()
    {
        IsInitialized = true;

        string className = "android.content.Intent";
        IntentClass = new AndroidJavaClass(className);

        //Intent sendIntent = new Intent();
        sendIntent = new AndroidJavaObject(className);

        UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        currentActivity = UnityPlayer.GetStatic<AndroidJavaObject>("currentActivity");

    }

    // might have to use https://developer.android.com/guide/components/broadcasts to avoid it pushing window to front
    // lead on how to https://stackoverflow.com/questions/20801074/sending-intent-to-another-application-without-opening-it-in-android
    public static void IntentShareText(string text)
    {
        if (Application.platform != RuntimePlatform.Android)
        {
            return;
        }

#if UNITY_ANDROID
        if (!IsInitialized)
        {
            Initialize(); // Initialize Android-related objects
        }

        //sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.Call<AndroidJavaObject>("setAction", IntentClass.GetStatic<string>("ACTION_SEND"));

        //sendIntent.putExtra(Intent.EXTRA_TEXT, textMessage);
        //sendIntent.Call<AndroidJavaObject>("putExtra", IntentClass.GetStatic<string>("EXTRA_TEXT"), text);
        sendIntent.Call<AndroidJavaObject>("putExtra", EXTRA_TEXT_NAME, text);

        //sendIntent.setPackage(info.activityInfo.packageName);
        sendIntent.Call<AndroidJavaObject>("setPackage", TargetAppPackageName);

        //sendIntent.setType("text/plain");
        sendIntent.Call<AndroidJavaObject>("setType", "text/plain");

        //startActivity(sendIntent);
        currentActivity.Call("startActivity", sendIntent);
    }
#endif
    //have make it work using void OnApplicationPause(bool pauseStatus)
    //or can call this at any point in time as long as the app is not closed.the intent data will be there
    public static string GetIntentString(string key)
    {
#if UNITY_ANDROID
        if (!IsInitialized)
        {
            Initialize(); // Initialize Android-related objects
        }

        AndroidJavaObject intent = currentActivity.Call<AndroidJavaObject>("getIntent");
        string text = intent.Call<string>("getStringExtra", key);

        return text;
#endif
    }
    /*
     * Yo don't need this to send a Intent.
     * To recieve intents this intent filter is required to be added. It can be added under the default one from unity [it is on Edit->ProjectSettings->Player->PublishingSettings->CustomMainManifest]
    <intent-filter>
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>
    */
}