[英]How can I differentiate an android Activity from a SubActivity programatically?
[英]How can I call a parent activity from a third subactivity
我目前正在添加cordova插件來啟動我自己的自定義相機應用程序。 我也包括Aviary來做一些照片編輯。 現在我最大的問題是我不知道如何從活動(3)返回到活動(1),在這里我需要能夠訪問和調用:
this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
我搜索了許多關於stackoverflow的帖子和許多博客。 我已經按照對流返回父級活動的方式進行了觀察,但是從A-> B-> C-> A那里我看不到任何對流。我的當前代碼發布在下面。 目前,我可以從鳥舍->轉到第二個活動(攝像機預覽),但是我對為什么不能再進一步上升感到困惑。
不可能必須走那么遠嗎?
是否不可能僅添加finish(); 盡可能遠地上升?
根據cordova文檔,我的execute方法位於Activity 1中:
(1)科爾多瓦插件
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(發射鳥舍)
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方法的一些示例。
編輯:所以事實證明,在finish()之后我無法返回上一個活動的原因; 是因為我在意圖之一中添加了標志。 重新閱讀文檔后,我意識到了錯誤所在。 刪除此行后,我能夠按預期進行所有操作。
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
在第二項活動中使用NO HISTORY標志。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.