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で取得されたバーコードテキストを返す方法がどうしてもわかりません。
お手数ですが、お知恵を拝借できればと存じます。
何卒、宜しくお願いいたします。