Намерението на камерата за ACTION_IMAGE_CAPTURE не се показва на Samsung Galaxy Nexus(4.0.2)

Използвам следния код, вземам снимка от камерата и за да получа пътя на картината.

...
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_IMAGE_CAPTURE); // image capture
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.d(TAG, "onActivityResult:" + resultCode + " request:" + requestCode);

    switch (requestCode) {
        case CAMERA_IMAGE_CAPTURE:
            Uri selectedImageUri = data.getData();
            userImagePath = getPath(selectedImageUri);
        break;
    }
}

Работи добре на емулатор и на различни устройства. Но на Samsung Galaxy Nexus (4.0.2) не стартира приложението Камера. Но връща RESULT_OK на onActivityResult и не виждам изключения в LogCat. Моля, дайте ми съвет как да реша този проблем. Благодаря предварително!


person tesk_terrus    schedule 13.07.2012    source източник
comment
stackoverflow.com/questions/7277287/ Просто проверете тази връзка..може да е от полза.......Проблемът може да е заради името на файла или пътя (което би било по-добре, ако няма специални символи като интервали)   -  person Satish    schedule 11.02.2013


Отговори (1)


Липсва ви EXTRA_OUTPUT, което може да повлияе на нещата. Моят Galaxy Nexus може да стартира успешно този примерен проект, който използва следния код за заявка на снимката:

Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);

output = new File(dir, "CameraContentDemo.jpeg");
i.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(output));

startActivityForResult(i, CONTENT_REQUEST);
person CommonsWare    schedule 13.07.2012
comment
Здравейте, за съжаление същият пример не работи за мен. На моя Samsung Galaxy S1, след щракване върху OK на екрана за потвърждение, намерението не се връща към моята дейност. Има ли някакъв трик, който пропускам? - person Tom Burger; 10.08.2012
comment
@TomBurger: Трябва да ви се обаждат с onActivityResult(). Ако не, това може би е грешка на Samsung. - person CommonsWare; 10.08.2012
comment
не, след като щракна върху OK, това ме връща към приложението за камера. Връща се към моята дейност само след като щракнете върху Отказ. Между другото, същият проблем например тук: stackoverflow.com/questions/8221879/ - person Tom Burger; 10.08.2012
comment
@TomBurger: Тогава това е грешка на Samsung. - person CommonsWare; 10.08.2012
comment
Предполагам, че реших проблема. Описах решението като отговор на друг въпрос: stackoverflow.com/a/13185464/412070 - person Tom Burger; 02.11.2012
comment
Environment.getExternalStoragePublicDirectory(‹Folder Name›) разреши основния проблем, който получавах. :) - person AnkitRox; 19.01.2015
comment
@TomBurger: Това се случваше с мен. Уверете се, че телефонът ви има директория, в която изображението ще се съхранява. След това бутонът OK ще работи добре. - person Anuj Sharma; 16.12.2015
comment
Environment.getExternalStoragePublicDirectory сега е отхвърлен. Вместо това трябва да използвате Context#getExternalFilesDir(String) - person Leo Droidcoder; 01.12.2020