Androidで javaクラスの

package com.xxx;

public class hoge{

public hoge(){}

メソッド...

}

のメソッドにアクセスするときは、
Plugins>Androidフォルダにそのjarを置いて

C#から

AndroidJavaObject Instatnce = new AndroidJavaObject("com.xxx");
var fuga = Instatnce.Call<戻り値>("メソッド名");

などでいけるのですが、
この方法だと以下の継承されたクラスにアクセスできません。

package com.xxx;

import android.support.v7.app.ActionBarActivity;

public class hoge extends ActionBarActivity{

public hoge(){}

メソッド...

}

これは、上記のC#でアクセスすると
java.lang.ClassNotFoundException エラーになってしまいます。

初歩的な質問かもしれませんがご指導お願いします。


AndroidのActivityという概念をまるで理解してなかったのですが、
おかげで2つの方法でメソッドを呼べました。

java

 package com.xxx;

import com.unity3d.player.UnityPlayerActivity;
import com.unity3d.player.UnityPlayer;

public class Hoge extends UnityPlayerActivity {

  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    UnityPlayer.UnitySendMessage("Main Camera", "Hoge", "HOGEHOGE");
  }

  public String Fuga(){
      return "FUGAFUGA";
  }
}

このままだとエラーなので、Macでの

  /Applications/Unity/Unity.app/Contents/PlaybackEngines/classes.jar

を追加して、jar化。
Plugins>Androidフォルダにそのjarを置いて

AndroidManifest.xml で UnityPlayerActivity を拡張したHogeに変更。

    <activity android:name="Hoge"
              android:label="@string/app_name">

Main Camera オブジェクトに追加したC#コンポーネント

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour
{
    void Start ()
    {
        // Unity インスタンスを取得
        AndroidJavaClass unityPlayer = new AndroidJavaClass ("com.unity3d.player.UnityPlayer");

        // 現在のアクティビティを取得
        AndroidJavaObject activ = unityPlayer.GetStatic<AndroidJavaObject> ("currentActivity");

        // インスタンスメソッドを呼ぶ
        Debug.Log(activ.Call<string> ("Fuga"));// FUGAFUGA
    }

        // javaからUnitySendMessageで送られてくる。
    void Hoge(string message){
        Degub.log(message); // HOGEHOGE
    }
}

以上、ありがとうございました。