Путь к SD-карте из галереи намерений - PullRequest
0 голосов
/ 25 января 2011

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

вот код ..

    Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
    photoPickerIntent.setType("image/jpg");
    photoPickerIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/Pictures/image.jpg"));
    startActivityForResult(photoPickerIntent, 1);



protected void onActivityResult(int requestCode, int resultCode, Intent intent)      {
   super.onActivityResult(requestCode, resultCode, intent);

          if (resultCode == RESULT_CANCELED) {
           showToast(this,"Activity cancelled");
           return;
          }
           else if(resultCode == RESULT_OK) {


             System.out.println("requestCode--"+requestCode);
             System.out.println("resultCode--"+resultCode);
             System.out.println("data--"+intent.getData());
             Uri uri = intent.getData();
             String data = uri.getPath();
             System.out.println("uri.getPath()--"+uri.getPath());
             System.out.println("type--"+intent.getType());
             System.out.println("path--"+Environment.getExternalStorageState());


                return;

              }

             switch (requestCode) {
                 case CAMERA_ACTIVITY: 
                     Bundle b = intent.getExtras();
                     Bitmap bm = (Bitmap) b.get("data");
              //       mImageView.setImageBitmap(bm); // Display image in the View

                     // large image?
                       if (b.containsKey(MediaStore.EXTRA_OUTPUT)) { // large image?
                       Log.i(TAG, "This is a large image");
                          showToast(this,"Large image");
                       // Should have to do nothing for big images -- should already saved in MediaStore ... but
                           MediaStore.Images.Media.insertImage(getContentResolver(), bm, null, null);
                           } 
                            else {
                               Log.i(TAG, "This is a small image");
                               showToast(this,"Small image");
                              MediaStore.Images.Media.insertImage(getContentResolver(), bm, null, null);
                           }
                          break;
                         }
                  }
                }

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

как мне это получить?

Ответы [ 2 ]

1 голос
/ 15 января 2012

Вы можете захотеть что-то вроде этого:

Uri uri = (Uri) intent.getExtras().get("android.intent.extra.STREAM"); 

if ( intent.getAction().equals( Intent.ACTION_SEND ) )
{
    if ( uri.getScheme().equals("content"))
    { 
        Cursor cursor = getContentResolver().query( uri, null, null, null, null );
        cursor.moveToFirst();
        filePath = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA));
    }
}
0 голосов
/ 05 декабря 2013

Этот код может помочь вам

Этот код откроет одно диалоговое окно с камерой и галереей и SD-картой устройств, чтобы получить путь к изображениям.

...