Не получается вывести картинку через 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));
}