26
Сен
2021

Не получается вывести картинку через Uri

Не получается установить картинку через Uri во вьюшку, как бы не пытался, все время вылезают совершенно разные ошибки, то NullPointerException: uriString, то ошибка с доступом к галерее (доступ открыт и в манифесте и программно)

Не знаю нормально ли это, но Uri выдает следующий: content://com.android.providers.media.documents/document/image%3A31

public class MainActivity extends AppCompatActivity {

static final int GALLERY_REQUEST = 1;
private final static String FILE_NAME = "content.txt";
private static final int STORAGE_PERMISSION_CODE = 911;
public static Uri selectedImageUri;
ImageView interfaceImage;
String textUri;


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

    requestStoragePermission();

}

public void imageViewButton(View view) {
    Intent intent = new Intent();
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), GALLERY_REQUEST);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        if (requestCode == GALLERY_REQUEST) {

            selectedImageUri = data.getData();

            //just to display the imagepath
            Toast.makeText(this.getApplicationContext(), selectedImageUri.toString(), Toast.LENGTH_SHORT).show();
        }
    }
}

// сохранение файла
public void buttonTestSave(View view){

    FileOutputStream fos = null;
    try {
        String text = selectedImageUri.toString();

        fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
        fos.write(text.getBytes());
        Toast.makeText(this, FILE_NAME + " saved", Toast.LENGTH_SHORT).show();

    }
    catch(IOException ex) {

        Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show();
    }
    finally{
        try{
            if(fos!=null)
                fos.close();
        }
        catch(IOException ex){

            Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
}
// открытие файла
public void buttonTestOpen(View view){

    FileInputStream fin = null;
    try {
        fin = openFileInput(FILE_NAME);
        byte[] bytes = new byte[fin.available()];
        fin.read(bytes);
        textUri = new String (bytes);
        Toast.makeText(this, textUri, Toast.LENGTH_SHORT).show();
    }
    catch(IOException ex) {

        Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show();
    }
    finally{

        try{
            if(fin!=null)
                fin.close();
        }
        catch(IOException ex){

            Toast.makeText(this, ex.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
}

public void ButtonSaveSettings(View view){

    buttonTestSave(interfaceImage);
    interfaceImage.setImageURI(Uri.parse(textUri));
}

Источник: https://ru.stackoverflow.com/questions/1332199/%D0%9D%D0%B5-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B0%D0%B5%D1%82%D1%81%D1%8F-%D0%B2%D1%8B%D0%B2%D0%B5%D1%81%D1%82%D0%B8-%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D1%83-%D1%87%D0%B5%D1%80%D0%B5%D0%B7-uri

Тебе может это понравится...

Добавить комментарий