Since no one answers my question.
I find a tutorial that can solve this problem.
Update: Given that the link is broken, I will send my own code to implement the Cordova interface.
// Instance for CordovaInterface private final ExecutorService threadPool = Executors.newCachedThreadPool(); private boolean mAlternateTitle = false; private boolean bound; private boolean volumeupBound; private boolean volumedownBound; private CordovaPlugin activityResultCallback; private Object activityResultKeepRunning; private Object keepRunning; public Activity getActivity() { return this; } @Deprecated public Context getContext() { return this; } public ExecutorService getThreadPool() { return threadPool; } public void setActivityResultCallback(CordovaPlugin plugin) { this.activityResultCallback = plugin; } public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) { this.activityResultCallback = command; this.activityResultKeepRunning = this.keepRunning; // If multitasking turned on, then disable it for activities that return // results if (command != null) { this.keepRunning = false; } // Start activity super.startActivityForResult(intent, requestCode); } @Override protected void onActivityResult(final int requestCode, final int resultCode, final Intent intent) { super.onActivityResult(requestCode, resultCode, intent); final CordovaPlugin callback = this.activityResultCallback; if (callback != null) { // Need to use background thread this.getThreadPool().execute(new Runnable() { public void run() { callback.onActivityResult(requestCode, resultCode, intent); } }); } }
source share