2013-02-12 2 views
1

Это мой код для извлечения изображения из галереиГалерея Намерение не работает на Android 4.0.3

intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(intent, GALLERY_INTENT); 

и это onActivityResult() метод

if(requestCode==2 && resultCode == RESULT_OK){ 

      Uri _uri = data.getData(); 
      if (_uri != null) { 

      //User had pick an image. 
      Cursor cursor = getContentResolver().query(_uri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null); 
      cursor.moveToFirst(); 

      //Link to the image 
      final String imageFilePath = cursor.getString(0); 
      cursor.close(); 

      Intent intent = new Intent(HomeActivity.this,ConfirmPicture.class); 
      intent.putExtra(INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true); 
      intent.putExtra("IMAGE_PATH", imageFilePath); 
      intent.putExtra("OUTLET_ID", 0); 
      intent.putExtra("OUTLET_NAME", "name"); 
      startActivity(intent); 
      } 

Этот код работает отлично на Android 2.3 .4, но когда я протестировал этот код на устройстве 4.0.3, он не работает, что может быть проблемой?

+0

когда вы говорите: "это не работает", что именно вы имеете в виду ? Можете ли вы уточнить, что он делает и не делает? т. е. есть ли исключение? или просто не открывается галерея? Есть ли сообщение в Logcat в то время, когда вы пытаетесь скрыть намерение? – FoamyGuy

+0

imageFilePath в методе предоставляет мне правильный путь к изображению через намерение галереи, но не показывает его в ImageView. в версии 4.0.3. –

+0

у вас есть анс, если да, то pls share я тоже имею ту же проблему –

ответ

0

Я решил эту проблему

  Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      ZootOutObject.objectUri = getImagePath(); 
      intent.putExtra(MediaStore.EXTRA_OUTPUT, ZootOutObject.objectUri); 
      startActivityForResult(intent, CAMERA_INTENT); 

если (requestCode == 1 & & ResultCode == RESULT_OK) {

   String pathName=Environment.getExternalStorageDirectory()+"/folder_name/image_zootout.jpg"; 

      Intent intent = new Intent(getApplicationContext(),PhotoEditorActivity.class); 
      intent.putExtra("IMAGE_PATH", pathName); 
      intent.putExtra("OUTLET_ID", 0); 
      intent.putExtra("OUTLET_NAME", ""); 
      startActivity(intent); 

     } 


private Uri getImagePath() { 
    // If sd card is available 
     if(android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){ 
      String path = Environment.getExternalStorageDirectory() .getAbsolutePath(); 
      filename = "image_zootout.jpg"; 
      path += "/folder_name"; 
      File file = new File(path); 
      if (!file.isDirectory()) { 
       file.mkdirs(); 
      } 
      path += "/" + filename; 
      File imageFile = new File(path); 
      if (!imageFile.exists()) { 
       try { 
        imageFile.createNewFile(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
        return null; 
       } 
      } 
      return Uri.fromFile(imageFile); 
     }else{ // If sd card is not available 
      return null; 
     } 
    } 
Смежные вопросы