1

これは私がフォトアルバムから写真を取得する意図を発している方法です

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

次に、結果から私はからのパスを取ります

 Uri selectedImageUri = data.getData();

public String getPath(Uri selectedImageUri) {
    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);
}

選択した画像の画像をSDカードに入れます。

しかし、ドロップボックスアプリケーションもインストールされているので、それも表示されます。画像を選択すると、Uriは次のようになります。

file:///mnt/sdcard/Android/data/com.dropbox.android/files/scratch/FloorPlanImage/7th_floor_new.jpg

そして今、getPathを試してみるとクラッシュします。画像のパスを取得してSDカードに保存できるようにこれを修正する方法を教えてください。

4

2 に答える 2

1

さて、私は問題が何であったかを理解しました

int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

画像はAndroidのフォトギャラリーからではなくDropboxから選択されたため、何も返されません。

だから私は画像が選択されたときにUriを使用し、それを使用してImageViewを設定しましたが、それはうまく機能しました。

ありがとう !!

于 2012-10-17T06:03:33.003 に答える
1

次のコードを使用してくださいこれは私にとって完璧に機能しています

Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(
                    Intent.createChooser(intent, "Upload photo"),
                    RESULT_LOAD_IMAGE);

'onActivityResult'に次のコードを記述します

protected void onActivityResult(final 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();
imageView.setImageURI(selectedImage);


        } else

        if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
            photo = (Bitmap) data.getExtras().get("data");
            imageView.setImageBitmap(photo);

        }
}
于 2013-11-23T06:17:15.313 に答える