title: Callback Listener in Unity - How to call script file method from UnityPlayerActivity in Android
body: <p>I have an android library project and imported the library project in the Unity project. Now, I want to implement a callback in Unity project, which will execute according to the response given by the android library project. I mean to say, Call Script File method from UnityPlayerActivity (Android Project).</p>
  
  <p>Currently I am using below line of code but nothing happens:</p>
  
  <pre><code>UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage);
  </code></pre>
  
  <p><code>Main Camera</code> is my Game Object. <code>showMessage</code> is message name in Script File.
  <code>Message</code> is message which will be displayed in Unity through Android Activity.</p>
  
  <p>Please check my below code Unity Script File and Android Activity.</p>
  
  <p>Unity Script File:</p>
  
  <pre><code>using UnityEngine;
  using System.Collections;
  
  public class scriptfile : MonoBehaviour {
  
      // Use this for initialization
      void Start () {
  
  
          AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
          AndroidJavaObject jo = jc.GetStatic&lt;AndroidJavaObject&gt;("currentActivity"); 
          jo.Call("shareText","236","236");
      }
  
      void showMessage(string message){
          print ("hello");
          Debug.Log ("hello");
      } 
  }
  </code></pre>
  
  <p>Android File UnityPlayerActivity:</p>
  
  <pre><code>/**
   * Created by CH-E01073 on 28-09-2015.
   */
  public class MainAct extends UnityPlayerActivity implements RegistrationListener,BOffersListener {
      Context context;
      SharedPreferences prefs ;
      String AppIds="";
      String PublisherIDs="";
       public void shareText(String AppId,String PublisherID) {
         context=MainAct.this;
          prefs = PreferenceManager
                 .getDefaultSharedPreferences(context);
         Log.e("AppID", AppId);
         Log.e("PublisherID",PublisherID);
  
          AppIds=AppId;
          PublisherIDs=PublisherID;
  
           runOnUiThread(new Runnable() {
               @Override
               public void run() {
                   UnityPlayer.UnitySendMessage("Main Camera","showMessage","Start UI Thread");
                   if (prefs.getString(FreeBConstants.ID, null) == null
                           || prefs.getString(FreeBConstants.ID, null).equals("")
                           || !Build.VERSION.RELEASE.equals(prefs.getString(
                           FreeBConstants.VERSION, null))
                           || !FreeBCommonUtility.getDeviceId(context).equals(
                           (prefs.getString(FreeBConstants.DEVICE_ID, null)))) {
                  BSDKLogger.enableLogging(true);
                  SDKRegistration.initialize(MainAct.this, getApplicationContext(), AppIds,PublisherIDs);
                   }else{
  
                  Offers Offers = new Offers(MainAct.this);
                   Offers.setOnFreeBOffersListener(MainAct.this);
                   Offers.setTitle(
                           "Pick Any Offer to unlock your premium features",
                           "#FFFFFF", "#FF6D00");
                   }
           }
           });
  
  
  
      }
  
      @Override
      public void onOffersLoaded(String code,String freeBOffers) {
          CommonUtility.showToast(getApplicationContext(), code);
          UnityPlayer.UnitySendMessage("Main Camera","showMessage",freeBOffers);
      }
  
      @Override
      public void onShowOffers() {
  
           UnityPlayer.UnitySendMessage("Main Camera","showMessage","Show Offers");
      }
  
      @Override
      public void noOfferInstalled(String s, String s2) {
      }
  
      @Override
      public void onLeaveApplication(String s, String s2) {
      }
  
      @Override
      public void onDialogDismiss(String s) {
      }
  
      @Override
      public void onOffersFailed(String code, String errorMessage) {
  
          FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
          UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage);
      }
  
      @Override
      public void onOffersInstallSuccess(String code, String errorMessage) {
           FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
      }
  
      @Override
      public void onOffersInstallFailure(String code, String errorMessage) {
           FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
      }
  
  
      @Override
      public void onRegistrationFailed(String code, String errorMessage) {
          FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
          UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage);
      }
  
      @Override
      public void onRegistrationSuccess(String code, String errorMessage) {
        // FreeBCommonUtility.showToast(getApplicationContext(), errorMessage);
          Log.e("SUCCESS", errorMessage);
          // TODO Auto-generated method stub
          UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage);
  
          Offers Offers = new Offers(MainAct.this);
          Offers.setOnFreeBOffersListener(MainAct.this);
         Offers.setTitle(
               "Pick Any Offer to unlock your premium features",
                "#FFFFFF", "#FF6D00");
      }
  }
  </code></pre>
  
  <p>Can anyone help me to get rid of this issue?</p>