UnityでandroidのonActivityResultで取得した結果を取得する方法について


いつもお世話になっております。

UnityでAndroidJavaObject経由でonActivityResultの結果取得方法についての質問となります。

やりたいことは以下となります。

  1. Unity(C#)から以下のコードでAndroidJavaコードをコールする

[code]

    using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer")) {
                using (AndroidJavaObject activity = unityPlayer.GetStatic("currentActivity")) {
                    using (AndroidJavaClass cls = new AndroidJavaClass ("hoge.QRCodeReader")) {
                        cls.CallStatic ("readQRCode", activity);
                    }
                }
            }
    
[/code]

  2. 以下のJavaが呼び出される

[code]

    package hoge;
    
    
    import android.app.Activity;
    import android.content.ActivityNotFoundException;
    import android.content.Intent;
    import android.net.Uri;
    import android.util.Log;
    
    public class QRCodeReader extends Activity {
    
        public String result = "";
    
        public static void readQRCode(Activity activity) {
            Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            // バーコード："ONE_D_MODE"、QRコード："QR_CODE_MODE"、両方："MODE"
            intent.putExtra("SCAN_MODE", "ONE_D_MODE");
            try {
                activity.startActivityForResult(intent, 42);
            } catch (ActivityNotFoundException ex) {
                Uri url = Uri.parse("market://details?id=com.google.zxing.client.android");
                Intent intent2 = new Intent(Intent.ACTION_VIEW, url);
                activity.startActivity(intent2);
            }
        }
    
        public String getResultCOde() {
            return result;
        }
    
    
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            if( requestCode == 42 && resultCode == Activity.RESULT_OK){
                result = data.getStringExtra("SCAN_RESULT");
                Log.e("hogehoge", "@@@@@@@: " + result);
            }
        }
    }
    
[/code]

ここまでをAndroidの実機で実行すると、確かに、QRコードreaderアプリが呼び出されます。  
しかし、次にやりたいことは

  3. startActivityForResultで呼び出されたバーコードアプリで読み込んだバーコードテキストをonActivityResultで受け取る

  4. 3で受け取ったバーコードテキストをUnity側に返す

です。  
しかし、Unity側にonActivityResultで取得されたバーコードテキストを返す方法がどうしてもわかりません。

お手数ですが、お知恵を拝借できればと存じます。

何卒、宜しくお願いいたします。




AndroidJavaProxyを用いて、onActivityResultのタイミングでJava側からコールバックを呼び出すようにしてはいかがでしょうか。

参考SDK Doc：  
<http://docs.unity3d.com/ja/current/ScriptReference/AndroidJavaProxy.html>




AndroidJavaProxyを用いて、onActivityResultのタイミングでJava側からコールバックを呼び出すようにしてはいかがでしょうか。

参考SDK Doc：  
<http://docs.unity3d.com/ja/current/ScriptReference/AndroidJavaProxy.html>

