0

画像ファイルの完全なパスを文字列として取得しようとしていますが、うまくいきません。「content:/external/media/images/1」のような結果が得られます。それは間違いなく正しい道ではありません。ファイル拡張子を含む正しいパスを取得するにはどうすればよいですか?

これが私がこれまでに試したことです:

       public void onClick(View arg0) {
                switch (arg0.getId()) {
                case R.id.btnGetImage:
                    Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                     intent.setType("image/*");
                     startActivityForResult(Intent.createChooser(intent, "Select A Picture"),  
                               PHOTO_GALLERY);
                    break;
         }
 }

@Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         switch(requestCode){
         case PHOTO_GALLERY:
             if (resultCode == RESULT_OK) {
                 File file = new File(data.getDataString());
                 String imagePath = file.getAbsolutePath();
                 break;
             }
        }
}
4

3 に答える 3

1

このコードを試してください:

case R.id.btnGetImage:

        Intent i = new Intent(
                Intent.ACTION_PICK,
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(i, RESULT_LOAD_IMAGE);
        break;

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

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
            && null != data) {
        Uri selectedImage = data.getData();
        String[] filePathColumn = { MediaStore.Images.Media.DATA };

        Cursor cursor = getContentResolver().query(selectedImage,
                filePathColumn, null, null, null);
        cursor.moveToFirst();

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        picturePath = cursor.getString(columnIndex);
        cursor.close();

        ImageView imageView = (ImageView) findViewById(R.id.imageView1);
        imageView.setImageBitmap(BitmapFactory.decodeFile(picturePath));

    }

picturePath は必要なパスです...

于 2013-02-20T10:14:15.913 に答える
0
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     switch(requestCode){
     case PHOTO_GALLERY:
         if (resultCode == RESULT_OK) {
             Uri selectedImageUri = data.getData();
        String selectedImagePath = getRealPathFromURI(selectedImageUri);
             File file = new File(selectedImagePath );

             break;
         }
    }
 }
于 2013-02-20T10:14:48.200 に答える
0

filenameSDカードからのフェッチ中に、SDカードに存在する必要があるパスを正しく定義しました。

文字列ファイルパス = Environment.getExternalStorageDirectory()+"/フォルダー名/"+test.png;

このようなことをしようとしているにおいがします。

于 2013-02-20T10:22:58.123 に答える