Android Studio получает путь к файлу / uri для просмотра изображений

#java #android #android-studio

Вопрос:

Я пытаюсь получить путь / URI к файлу ImageView для сохранения в базе данных AWS S3. Я пробовал использовать растровое изображение / рисование изображения, но я не могу получить путь. Есть ли какой-либо альтернативный способ получить путь / URI к файлу ImageView? Вот что я написал до сих пор, но это не работает:

 private void uploadInputStream() {

        Uri path = Uri.parse("com.example.project/"   R.id.ivProfilePicture);
        String imgPath = path.toString();

        InputStream exampleInputStream = null;
        try {
            exampleInputStream = getContentResolver().openInputStream(path);

            Amplify.Storage.uploadInputStream(
                    "ExampleKey",
                    exampleInputStream,
                    result -> Log.i("MyAmplifyApp", "Successfully uploaded: "   result.getKey()),
                    storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure)
            );
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
 

Вот ошибка, которую я получаю, используя приведенный выше код :

 W/System.err: java.io.FileNotFoundException: Resource does not exist: android.resource://com.example.project/2131362045
W/System.err:     at android.content.ContentResolver.openInputStream(ContentResolver.java:1180)
        at com.example.project.VerifySignUpActivity.uploadInputStream(VerifySignUpActivity.java:126)
        at com.example.project.VerifySignUpActivity.access$000(VerifySignUpActivity.java:32)
        at com.example.project.VerifySignUpActivity$1$1$1.accept(VerifySignUpActivity.java:82)
        at com.example.project.VerifySignUpActivity$1$1$1.accept(VerifySignUpActivity.java:73)
        at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin$5.lambda$onResult$0(AWSCognitoAuthPlugin.java:387)
        at com.amplifyframework.auth.cognito.-$Lambda$AWSCognitoAuthPlugin$5$KyBT3ChKClMRGiVUgh9F0DBkIxU.call(Unknown Source:4)
        at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin$23.onResult(AWSCognitoAuthPlugin.java:1149)
        at com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin$23.onResult(AWSCognitoAuthPlugin.java:1145)
        at com.amazonaws.mobile.client.internal.InternalCallback.call(InternalCallback.java:75)
        at com.amazonaws.mobile.client.internal.InternalCallback.onResult(InternalCallback.java:62)
W/System.err:     at com.amazonaws.mobile.client.AWSMobileClient$11$1.onSuccess(AWSMobileClient.java:1911)
        at com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUser.getSession(CognitoUser.java:1020)
        at com.amazonaws.mobile.client.AWSMobileClient$11.run(AWSMobileClient.java:1904)
        at com.amazonaws.mobile.client.internal.InternalCallback$1.run(InternalCallback.java:101)
        at java.lang.Thread.run(Thread.java:919)
 

Ответ №1:

Эй, вот как я это делаю, попробуй

 private void uploadInputStream() {

    Uri path = Uri.parse("com.example.project/"   R.id.ivProfilePicture);

    Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);

    InputStream exampleInputStream = null;
    File file = null;

    try {
      exampleInputStream =
      getContentResolver().openInputStream(Uri.parse(bitmap));

      file = new File(String.valueOf(inputStream)); //upload the file
       
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}
 

Дай мне знать, как все идет