UnityPlayer.UnitySendMessageis a function voidand does not return a value. Take a look at the implementation of the function UnitySendMessageExtensionbelow. This is similar to turnipinindia's answer , but it returns a value. It only returns string, so you need to convert this string to any type of variable you are working with.
Java
public final class MyPlugin
{
public static MyPlugin testInstance;
public static MyPlugin instance()
{
if(testInstance == null)
{
testInstance = new MyPlugin();
}
return testInstance;
}
string result = "";
public string UnitySendMessageExtension(string gameObject, string functionName, string funcParam)
{
UnityPlayer.UnitySendMessage(gameObject, functionName, funcParam);
string tempResult = result;
return tempResult;
}
void receiveResult(string value)
{
result = "";
result = value;
}
}
C # :
class TestScript: MonoBehaviour
{
void sendResultToJava(float value)
{
using(AndroidJavaClass javaPlugin = new AndroidJavaClass("com.company.product.MyPlugin"))
{
AndroidJavaObject pluginInstance = javaPlugin.CallStatic("instance");
pluginInstance.Call("receiveResult",value.ToString());
}
}
void testFunction(string key)
{
float value = PlayerPrefs.GetFloat(key)
sendResultToJava(value);
}
}
Using Java:
String str = UnitySendMessageExtension("ProfileLoad", "testFunction","highScore");
#. , sendResultToJava #, testFunction, , .