我目前正在添加一个cordova插件来启动我自己的自定义相机应用程序。我还包括Aviary做一些照片编辑。现在我最大的问题是我不知道如何从活动(3)返回到我需要能够访问和呼叫的活动(1):
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
我搜索了stackoverflow和众多博客上的很多帖子。我已经看到了我已经看到的回归父母活动的对流,但是我还没有看到任何来自A - >的东西。 B - > C - >答:我目前的代码发布在下面。目前我可以从Aviary上升 - >到我的第二个活动(相机预览),但我很难过为什么我不能进一步上升一级。
不可能走得那么远吗? 是不是只能添加finish();要尽可能地回到你想要的地方?
我的执行方法根据cordova文档驻留在活动1中:
(1)CordovaPlugin
public class Aviary extends CordovaPlugin{
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
this.callbackContext = callbackContext;
Intent i = new Intent(cordova.getActivity(), CameraActivity.class);
this.cordova.startActivityForResult((CordovaPlugin) this, i, (CAMERA + 1) * 16 + returnType + 1);
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
logger.i("ACTIVITYRESULT - returned from cameraActivity, now in aviary");
if (resultCode == Activity.RESULT_OK && requestCode == CameraConstants.FROM_CAMERA_TO_EXECUTE)
// I need this to launch with the uri data contained within the intent
//build json array here
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
然后我的第二个活动开始于相机预览。捕获图像后,我会使用捕获的位图启动一个活动,并将其显示在屏幕上,并提供选项以发布图像或使用鸟舍进行编辑。
(2)CameraActivity:启动后捕获屏幕
Intent intent = new Intent(context, PostCaptureActivity.class);
intent.putExtra(CameraConstants.URI, path);
intent.putExtra("requestCode", CameraConstants.FROM_SAVEIMAGETASK_TO_POSTCAPTURE);
intent.putExtra(CameraConstants.SOURCE, CameraConstants.SOURCE_CAMERA);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivityForResult(intent, CameraConstants.FROM_SAVEIMAGETASK_TO_POSTCAPTURE);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CameraConstants.FROM_POSTCAPTURE_TO_PREVIEW)
{
logger.i("ACTIVITYTHREAD - inCameraActivity about to call finish");
Intent intent= new Intent();
setResult(RESULT_OK, intent);
//intent.putExtra("uri", data.getData());
intent.putExtra("requestCode", CameraConstants.FROM_CAMERA_TO_EXECUTE);
finish();
}
活动3:PostCaptureActivity(启动Aviary)
private void setupAviaryIntent() {
logger.i("Launching Aviary");
Intent intent = new Intent(PostCaptureActivity.this, FeatherActivity.class);
intent.setData(Uri.parse(uri));
intent.putExtra("requestCode", CameraConstants.LAUNCH_AVIARY);
intent.putExtra( "output-quality", 100 );
intent.putExtra( "output-format", Bitmap.CompressFormat.JPEG.name() );
intent.putExtra( "effect-enable-fast-preview", true );
intent.putExtra("tools-list", new String[]{"CROP", "EFFECTS", "ADJUST", "ENHANCE",
"DRAWING", "TEXT", "SHARPNESS", "BRIGHTNESS", "CONTRAST",
"BLEMISH", "SATURATION", "RED_EYE", "WHITEN", "COLORTEMP"});
startActivityForResult(intent, CameraConstants.LAUNCH_AVIARY);
}
@Override
public void onActivityResult( int requestCode, int resultCode, Intent data )
{
super.onActivityResult(requestCode, resultCode, data);
/** FROM: Aviary TO: Preview*/
if(resultCode == RESULT_OK && requestCode == CameraConstants.LAUNCH_AVIARY )
{
logger.i("in PostCaptureActivity, should go back to CameraActivity");
Uri uri = data.getData();
Intent intent = new Intent();
setResult(RESULT_OK, intent);
intent.putExtra("requestCode", CameraConstants.FROM_POSTCAPTURE_TO_PREVIEW);
intent.putExtra("uri", uri);
finish();
}
}
我正在寻找的是从活动3开始的方式并返回到父活动(1)或者我可以如何跳回到活动1并且能够使用我的图片运行sendPluginResult方法的一些示例信息。
编辑: 所以事实证明我在完成()之后无法返回上一个活动的原因;是因为我在其中一个意图中添加了标志。重读文档后,我意识到错误是什么。删除此行后,我能够按预期工作。
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
答案 0 :(得分:0)
在第二项活动中使用NO HISTORY标志。