UnityでandroidのonActivityResultで取得した結果を取得する方法について
いつもお世話になっております。
UnityでAndroidJavaObject経由でonActivityResultの結果取得方法についての質問となります。
やりたいことは以下となります。
- Unity(C#)から以下のコードでAndroidJavaコードをコールする
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); } } }
- 以下のJavaが呼び出される
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); } } }
ここまでをAndroidの実機で実行すると、確かに、QRコードreaderアプリが呼び出されます。
しかし、次にやりたいことは
startActivityForResultで呼び出されたバーコードアプリで読み込んだバーコードテキストをonActivityResultで受け取る
3で受け取ったバーコードテキストをUnity側に返す
です。
しかし、Unity側にonActivityResultで取得されたバーコードテキストを返す方法がどうしてもわかりません。
お手数ですが、お知恵を拝借できればと存じます。
何卒、宜しくお願いいたします。