1

У меня есть активность, которая позволяет пользователю выбирать предварительный просмотр фотографии, которую они выбирают из галереи или камеры. Проблема, с которой я сталкиваюсь, заключается в том, что намерение камеры/галереи немедленно возвращается, а затем показывает камеру/галерею и ничего не возвращает.Android - намерение камеры немедленно возвращается

Основной поток вещей выглядит следующим образом: Фрагмент -> Подкласс Application -> Top Activity - (startActivity) -> Просмотр фотографии Активность - (в OnCreate) -> Фото Chooser Намерение


//In the application subclass 
public static void launchImageSelector() 
{ 
    if(!(topActivity instanceof ImagePreviewActivity)) 
    { 
     Intent i = new Intent(context, ImagePreviewActivity.class); 
     topActivity.startActivityForResult(i, kImageSelectorRequestCode); 
    } 
} 

///in ImagePreviewActivity class 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    Intent chooser = createChooserIntent(createCameraIntent()); 
    chooser.putExtra(Intent.EXTRA_INTENT, createOpenableIntent("image/*")); 
    startActivityForResult(chooser, 1); 
} 

//intent creaters(from android src) 
private Intent createChooserIntent(Intent... intents) 
{ 
    Intent chooser = new Intent(Intent.ACTION_CHOOSER); 
    chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents); 
    chooser.putExtra(Intent.EXTRA_TITLE, "Choose Photo"); 
    return chooser; 
} 

private Intent createOpenableIntent(String type) 
{ 
    Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
//  i.addCategory(Intent.CATEGORY_OPENABLE); 
    i.setType(type); 
    return i; 
} 

private Intent createCameraIntent() 
{ 
    Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    File externalDataDir = Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_DCIM); 
    File cameraDataDir = new File(externalDataDir.getAbsolutePath() + 
      File.separator + "browser-photos"); 
    cameraDataDir.mkdirs(); 
    String mCameraFilePath = cameraDataDir.getAbsolutePath() + File.separator + 
      System.currentTimeMillis() + ".jpg"; 

    photoFileUri = Uri.fromFile(new File(mCameraFilePath)); 

    cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoFileUri); 

    return cameraIntent; 
} 

Что я здесь делаю неправильно? Что привело бы к намерению Chooser Intent немедленно вернуться, но и продолжить? Я что-то принципиально неправильно здесь?

Спасибо за помощь!

ответ

Смежные вопросы