2015-06-28 3 views
0

Я пытаюсь взять изображение из любого источника (например, dropbox, gallery, camera, retrica и т. Д.), Получив его путь и установив его на ImageView. используя это намерениеAndroid: Возьмите изображение из любого источника

private void cameraIntent() { 
     Intent pickIntent = new Intent(); 
     pickIntent.setType("image/*"); 
     pickIntent.setAction(Intent.ACTION_GET_CONTENT); 

     Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 


     String pickTitle = "Select or take a new Picture"; 
     Intent chooserIntent = Intent.createChooser(pickIntent, pickTitle); 
     chooserIntent.putExtra 
       (
         Intent.EXTRA_INITIAL_INTENTS, 
         new Intent[]{takePhotoIntent} 
       ); 

     startActivityForResult(chooserIntent, REQUEST_CAMERA); 

    } 

Но теперь я могу только обрабатывать намерения Gallery и Camera, как я могу обращаться с другими приложениями?

ответ

0

Для получения изображения из других систем файлов из устройства просто называют неявной Намерение Camera/Галерея/DropBox ИЛИ ...

После кода может поможет вам ..

pickbtn.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v){ 
      if (Environment.getExternalStorageState().equals("mounted")){ 
       Intent intent = new Intent(); 
       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_PICK); 
       startActivityForResult(Intent.createChooser(intent, "Select Picture:"), Constants.PICK_IMAGE_FROM_LIBRARY); 
      } 
     } 
    }); 

Теперь используйте OnActivity результат для получения данных ...

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if(requestCode == Constants.PICK_IMAGE_FROM_LIBRARY) 
    { 
     if (resultCode == RESULT_OK) { 
      Uri selectedImageUri = data.getData(); 
      String selectedImagePath = getPath(selectedImageUri); 
      mImagePath = selectedImagePath; 
      Bitmap photo = getPreview(selectedImagePath); 
      mImageViewProfileImage.setImageBitmap(photo); 
     } 
    } 
public String getPath(Uri uri) 
{ 
    String[] projection = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(uri, projection, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

public Bitmap getPreview(String fileName) 
{ 
    File image = new File(fileName); 

    BitmapFactory.Options bounds = new BitmapFactory.Options(); 
    bounds.inJustDecodeBounds = true; 
    BitmapFactory.decodeFile(image.getPath(), bounds); 

    if ((bounds.outWidth == -1) || (bounds.outHeight == -1)) 
    { 
     return null; 
    } 
    int originalSize = (bounds.outHeight > bounds.outWidth) ? bounds.outHeight : bounds.outWidth; 
    BitmapFactory.Options opts = new BitmapFactory.Options(); 
    opts.inSampleSize = originalSize/64; 
    return BitmapFactory.decodeFile(image.getPath(), opts); 
} 
} 

Это полный пример: https://gist.github.com/felixgborrego/7943560

+0

В этом примере обрабатывается только галерея – Spidersaw

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