Как сохранить изображения, которые выбраны из галереи? - PullRequest
0 голосов
/ 19 января 2019

Я выбираю несколько изображений из галереи, и когда мы очищаем последние приложения, изображения, которые мы выбрали, также удаляются.Я хочу отобразить изображения, даже если они были удалены из последних приложений, что означает, что я хочу сохранить изображение в приложении. Пожалуйста, предоставьте мне его код.Вы можете увидеть скриншот здесь для более ясного объяснения: введите описание изображения здесь

Нажав на изображение, я могу выбрать изображение из галереи и после нажатия на кнопку ниже, я хочу сохранить его в приложении..

Вот моя основная активность. Java

package com.amazoneindia.imageupload;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;

import java.io.ByteArrayOutputStream;

public class MainActivity extends AppCompatActivity {

    ImageView iv1,iv2,iv3,iv4,iv5;
    Button btn;
    private final int CODE_IMG_GALLERY1=1;
    private final int CODE_IMG_GALLERY2=2;
    private final int CODE_IMG_GALLERY3=3;
    private final int CODE_IMG_GALLERY4=4;
    private final int CODE_IMG_GALLERY5=5;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });

         init();


         iv1.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                startActivityForResult(Intent.createChooser(new Intent().
                        setAction(Intent.ACTION_GET_CONTENT).
                        setType("image/*"),"Select image"),
                        CODE_IMG_GALLERY1);
             }
         });
         iv2.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 startActivityForResult(Intent.createChooser(new Intent().
                                 setAction(Intent.ACTION_GET_CONTENT).
                                 setType("image/*"),"Select image"),
                         CODE_IMG_GALLERY2);
             }
         });
         iv3.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 startActivityForResult(Intent.createChooser(new Intent().
                                 setAction(Intent.ACTION_GET_CONTENT).
                                 setType("image/*"),"Select image"),
                         CODE_IMG_GALLERY3);
             }
         });
         iv4.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 startActivityForResult(Intent.createChooser(new Intent().
                                 setAction(Intent.ACTION_GET_CONTENT).
                                 setType("image/*"),"Select image"),
                         CODE_IMG_GALLERY4);
             }
         });
         iv5.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 startActivityForResult(Intent.createChooser(new Intent().
                                 setAction(Intent.ACTION_GET_CONTENT).
                                 setType("image/*"),"Select image"),
                         CODE_IMG_GALLERY5);
             }
         });

    }

    private void init(){
        this.iv1=findViewById(R.id.D1ivss1);
        this.iv2=findViewById(R.id.D1ivss2);
        this.iv3=findViewById(R.id.D1ivss3);
        this.iv4=findViewById(R.id.D1ivss4);
        this.iv5=findViewById(R.id.D1ivss5);
        this.btn=findViewById(R.id.btn);
    }

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

        if (requestCode==CODE_IMG_GALLERY1&&resultCode==RESULT_OK){
            Uri imageUri=data.getData();
            if (imageUri!=null){
                iv1.setImageURI(imageUri);
            }
        }
        if (requestCode==CODE_IMG_GALLERY2&&resultCode==RESULT_OK){
            Uri imageUri2=data.getData();
            if (imageUri2!=null){
                iv2.setImageURI(imageUri2);
            }
        }
        if (requestCode==CODE_IMG_GALLERY3&&resultCode==RESULT_OK){
            Uri imageUri3=data.getData();
            if (imageUri3!=null){
                iv3.setImageURI(imageUri3);
            }
        }
        if (requestCode==CODE_IMG_GALLERY4&&resultCode==RESULT_OK){
            Uri imageUri4=data.getData();
            if (imageUri4!=null){
                iv4.setImageURI(imageUri4);
            }
        }
        if (requestCode==CODE_IMG_GALLERY5&&resultCode==RESULT_OK){
            Uri imageUri5=data.getData();
            if (imageUri5!=null){
                iv5.setImageURI(imageUri5);
            }
        }
    }
}

1 Ответ

0 голосов
/ 19 января 2019

Хорошо, проблема в том, что вы нигде не сохраняете URL своего изображения, и когда вы удаляете свое приложение из последних, переменные также очищаются, поэтому решение заключается в том, что вы можете сохранить его в SharedPreferences и получить его в любое время в любом месте вашего кода. Примечание очистка данных приложения из настроек также удалит данные из sharedPreferences.
Перейдите по этой ссылке https://developer.android.com/training/data-storage/shared-preferences#java

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