Как получить имя изображения, когда пользователь загружает изображение из галереи и отображает его в textView? - PullRequest
0 голосов
/ 25 февраля 2020
  • Я пытаюсь получить фактическое имя изображения изображения, выбранного пользователем в галерее (например, IMG_2020).
  • Я попытался , используя getAbsolutePath () и getName (), но эти 2 метода отображают что-то вроде «image $ 3A75» вместо фактического имени файла изображения.

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

Любая помощь, пожалуйста?

Это мой метод onActivityResult ()

  • fileName является textView I хочу разместить свой imageName
  • объект bitMap еще не используется, потому что я слежу за онлайн-уроком и копирую его наполовину, думаю, он будет использован позже в уроке

public class createCharity extends AppCompatActivity {

    private static final int PICK_IMAGE_REQUEST = 1;
    Button uploadButton;
    Button createCharityButton;
    TextView charityTitle;
    TextView fileName;
    TextView charityDescription;
    Uri charityImage;
    private StorageReference mStorageRef;
    private DatabaseReference mDatabaseRef;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_create_charity);

        uploadButton = findViewById(R.id.uploadButton);
        charityTitle = findViewById(R.id.charityTitle);
        fileName = findViewById(R.id.fileName);
        charityDescription = findViewById(R.id.charityDescription);
        createCharityButton = findViewById(R.id.createCharityButton);

        mStorageRef = FirebaseStorage.getInstance().getReference("charityUploads");
        mDatabaseRef = FirebaseDatabase.getInstance().getReference("charityUploads");

        uploadButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openFileChooser();
            }
        });

    }

    private void openFileChooser() {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(intent, PICK_IMAGE_REQUEST);
        System.out.println("----------------------c1");
    }

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

        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
            charityImage = data.getData();
            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), charityImage);

                File file = new File(String.valueOf(charityImage));
                System.out.println("Image name: " + file.getName());

                fileName.setText(file.getName());

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

1 Ответ

1 голос
/ 25 февраля 2020

Что-то вроде:

                String projection [] = {

                          MediaStore.Images.Media.DATA
                        , MediaStore.Images.Media.DISPLAY_NAME
                        , MediaStore.Images.Media.SIZE};
                Cursor cursor = getContentResolver().query(data.getData(), projection, null, null, null);

                if ( cursor==null)
                {
                    Toast.makeText(context, "cursor==null\n\ncould not query content resolver for\n\n" + path, Toast.LENGTH_LONG).show();

                    return;
                }

                cursor.moveToFirst();
                String data = cursor.getString(0);
                String displayName = cursor.getString(1);
                String size = cursor.getString(2);

                Toast.makeText(context, "getContentResolver().openInputStream() ok\n\n" + path
                            + "\n\nDISPLAY_NAME: " + displayName
                            + "\nDATA: " + data
                            + "\nSIZE: " + size
                            , Toast.LENGTH_LONG).show();
                cursor.close();             

ДАННЫЕ недоступны на Android Q +.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...