Hello, I’m Songinnight.
We using some outer modules. (Game publisher’s module or Ad. modules… like that…)
Critical issue is that we cannot receive onActivityResult event.
Because some modules callback startActivity with very high requestCode number. For example, 5901, 60001, 405… I do not run startActivityForResult(…). Module does. I cannot handle activity which is added by module.
Therefore, I think there must be single onActivityResult handler, could handle every request codes. At least enough to know there’s activityResult event occured.
I’m begging you.
Have a good day today. Thank you.
Bellow my example code…
[CoronaActivity Class]
... private HashMap\<Integer, OnActivityResultHandler\> fActivityResultHandlers; // existing handler array private static OnActivityResultHandler fActivityResultSingleHandlers; // \<--- single static handler ... public CoronaActivity() { myInitialIntent = null; myIsActivityResumed = false; ... myRuntimeTaskDispatcher = null; fActivityResultHandlers = new HashMap(); fActivityResultSingleHandlers = null; // \<--- init. } ... // I suggest this public void registerActivityResultSingleHandler(OnActivityResultHandler handler) { if (handler == null) { Log.e(...) return; } // register one handler fActivityResultSingleHandlers = handler; } ... protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // ------- We can get any requestCode and I will be able to sleep comfortably :) ------- if( fActivityResultSingleHandlers != null) { fActivityResultSingleHandlers( requestCode, resultCode, data ); } // -------------------------------------- OnActivityResultHandler handler = null; handler = (OnActivityResultHandler)fActivityResultHandlers.get(Integer.valueOf(requestCode)); if (handler == null) { return; } handler.onHandleActivityResult(this, requestCode, resultCode, data); }
