Путь изображения в Android

1

Я использую andengine в своем приложении для Android и хочу отображать изображения из галереи устройств. Как я могу получить путь к изображениям? Обратите внимание: я не хочу использовать что-то вроде этого:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),1);

То, что мне нужно, это просто путь к изображениям. Не могли бы вы помочь мне?

Теги:
image
andengine

3 ответа

2
Лучший ответ

Попробуйте использовать этот код без использования намерений,

private void FillPhotoList()
{
    // initialize the list!
    ArrayList<String> GalleryList = new ArrayList<String>();
    String[] projection = {MediaStore.Images.ImageColumns.DATA};
    // intialize the Uri and the Cursor, and the current expected size.
    Cursor c = null;
    Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
    //
    // Query the Uri to get the data path.  Only if the Uri is valid.
    if (u != null)
    {
        c = managedQuery(u, projection, null, null, null);
    }
    // If we found the cursor and found a record in it (we also have the id).
    if ((c != null) && (c.moveToFirst()))
    {
        do
        {
            // Loop each and add to the list.
            GalleryList.add(c.getString(0));
        }
        while (c.moveToNext());
    }
}
7

Посмотрите следующий код,

public class select_Gallery_image extends Activity{

    private static final int SELECT_PICTURE = 1;
    protected String _path;
    protected boolean _taken;   
    protected static final String PHOTO_TAKEN   = "photo_taken";
    ProgressDialog PD1;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        Intent intent = new Intent(Intent.ACTION_PICK);
        intent.setType("image/*");
        //intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, SELECT_PICTURE);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) 
    {
        if (resultCode == RESULT_OK)
        {
            if (requestCode == SELECT_PICTURE) 
            {
                settings.bitmap=null;
                Uri selectedImageUri = data.getData();
                settings.selectedImagePath = getPath(selectedImageUri);
                File filenew = new File(settings.selectedImagePath);
                int file_size = Integer.parseInt(String.valueOf(filenew.length()/1024));
                if(file_size<= 10000){
                PD1 = ProgressDialog.show(select_Gallery_image.this,"","Loading");
                new Thread(new Runnable() {

                    public void run() {
                        Looper.prepare();
                        settings.bitmap = decodeFile(settings.selectedImagePath);
                        imagehandler.sendEmptyMessage(0);

                    }
                }).start();
                }
                else{
                    AlertDialog.Builder alertbox = new AlertDialog.Builder(select_Gallery_image.this);
                    alertbox.setMessage("Take Image Size Less than 10 MB");
                    alertbox.setNeutralButton("Ok", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface arg0, int arg1) {
                        finish();
                         }
                    });
                    alertbox.show();
                }
             }
        }
    }
    private Handler imagehandler = new Handler(){
          public void handleMessage(Message msg){
             PD1.dismiss();
             settings.img_logo.setImageBitmap(settings.bitmap); 
             settings.img_logo.setBackgroundColor(Color.DKGRAY);
              finish(); 
          }
    };


    public String getPath(Uri uri) 
    {
        String[] projection = { MediaStore.Images.Media.DATA };
      Cursor cursor = managedQuery(uri, projection, null, null, null);
      int column_index = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
      cursor.moveToFirst();
      return cursor.getString(column_index);

    }

     static Bitmap decodeFile(String str){
            try {
                //decode image size
                BitmapFactory.Options o = new BitmapFactory.Options();
                o.inJustDecodeBounds = true;
                BitmapFactory.decodeStream(new FileInputStream(str),null,o);

                //Find the correct scale value. It should be the power of 2.
                final int REQUIRED_SIZE=70;
                int width_tmp=o.outWidth, height_tmp=o.outHeight;
                int scale=1;
                while(true){
                    if(width_tmp/2<REQUIRED_SIZE || height_tmp/2<REQUIRED_SIZE)
                        break;
                    width_tmp/=2;
                    height_tmp/=2;
                    scale++;
                }

                //decode with inSampleSize
                BitmapFactory.Options o2 = new BitmapFactory.Options();
                o2.inSampleSize=scale;
                return BitmapFactory.decodeStream(new FileInputStream(str), null, o2);
            } catch (FileNotFoundException e) {}
            return null;
        }

     @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
         if(keyCode == KeyEvent.KEYCODE_BACK){
             finish();
         }
        return super.onKeyDown(keyCode, event);
    }
}
1

возможно, я неправильно понял этот вопрос, но мне кажется, что вы хотите знать, как найти, где фотографии хранятся по умолчанию.

Из руководства для разработчиков

В API уровня 8 или выше используйте getExternalStoragePublicDirectory(), передав ему тип общедоступного каталога, который вы хотите, например DIRECTORY_MUSIC, DIRECTORY_PICTURES, DIRECTORY_RINGTONES или другие. При необходимости этот метод создаст соответствующий каталог.

Если вы используете API-уровень 7 или ниже, используйте getExternalStorageDirectory(), чтобы открыть файл, представляющий корень внешнего хранилища, а затем сохраните ваши общие файлы в одном из следующих каталогов:

Music/ - Media scanner classifies all media found here as user music.
Podcasts/ - Media scanner classifies all media found here as a podcast.
Ringtones/ - Media scanner classifies all media found here as a ringtone.
Alarms/ - Media scanner classifies all media found here as an alarm sound.
Notifications/ - Media scanner classifies all media found here as a notification sound.
Pictures/ - All photos (excluding those taken with the camera).
Movies/ - All movies (excluding those taken with the camcorder).
Download/ - Miscellaneous downloads.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню