Cordova onActivityResult is called immediately after startActivityForResult with RESULT_CANCELED

In the code below, when onActivityResult is called immediately with RESULT_CANCELED.

As suggested in other answers, I added setActivityResultCallback just before startActivityForResult () and PluginResult # setKeepCallback (true) ;. But nothing helps. Any suggestion?

.... public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException { this.callbackContext = callbackContext; if (action.equals(ACTION_OPEN)) { if(PermissionHelper.hasPermission(this, READ)) { chooseFile(); } } else { return false; } return true; } public void chooseFile() { final CordovaPlugin plugin = (CordovaPlugin) this; Runnable worker = new Runnable() { public void run() { Intent filePickerIntent = new Intent(Intent.ACTION_PICK); filePickerIntent.setType("image/*"); plugin.cordova.setActivityResultCallback(plugin); plugin.cordova.startActivityForResult(plugin, Intent.createChooser(filePickerIntent,"Choose file"), PICK_FILE_REQUEST); } }; this.cordova.getThreadPool().execute(worker); PluginResult r = new PluginResult(PluginResult.Status.NO_RESULT); r.setKeepCallback(true); callbackContext.sendPluginResult(r); } public void onActivityResult(int requestCode, int resultCode, Intent data) { Log.d(TAG,"Enter onActivityResult"); if (requestCode == PICK_FILE_REQUEST) { Log.d(TAG,"requestCode == PICK_FILE_REQUEST"); if (resultCode == Activity.RESULT_OK) { Log.d(TAG,"Result Ok"); Uri uri = data.getData(); Log.d(TAG, uri.toString()); } else if (resultCode == Activity.RESULT_CANCELED) { Log.d(TAG,"Result canceled"); callbackContext.error("OPERATION_CANCELLED"); return; } this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, "UNKNOWN_ERROR")); } } 
0
android cordova
source share
2 answers

I encountered the same problem in one of my cordova's applications. I could not find the source of the error, but I solved it by creating a new project and installing all the plugins again. It worked.

0
source share

I had a similar problem with my application after installing cordova-plugin-background-mode. For me, the problem exists on Android 4.4.2, and not on android 6.0. To solve this problem, I set the AndroidLaunchMode parameter in config.xml

 <preference name="AndroidLaunchMode" value="singleTop" /> 
0
source share

All Articles