Java 如何保存从库中拾取的图像?
我正在从gallery中选择多个图像,当我们清除最近的应用程序时,我们选择的图像也会被删除。我想显示图像,即使它已从最近的应用程序中删除,这意味着我想在应用程序中保存图像。请向我提供它的代码。 您可以在此处看到屏幕截图以了解更多说明: 通过点击图片,我可以从图库中选择图片,然后点击下面的按钮,我想把它保存在应用程序中 这是我的主要活动Java 如何保存从库中拾取的图像?,java,android,image,Java,Android,Image,我正在从gallery中选择多个图像,当我们清除最近的应用程序时,我们选择的图像也会被删除。我想显示图像,即使它已从最近的应用程序中删除,这意味着我想在应用程序中保存图像。请向我提供它的代码。 您可以在此处看到屏幕截图以了解更多说明: 通过点击图片,我可以从图库中选择图片,然后点击下面的按钮,我想把它保存在应用程序中 这是我的主要活动 package com.amazoneindia.imageupload; import android.content.Intent; import and
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);
}
}
}
}
好的,问题是您没有将图像url保存到任何地方,当您从最近的应用程序中删除应用程序时,变量也会被清除,因此解决方案是您可以将其保存在SharedReferences中,并随时在代码中的任何位置获取它。 注意从设置中清除应用程序数据也将从SharedReference中清除数据。
点击这个链接
请告诉我们您正在考虑的方法,也许我们可以在这方面进一步帮助您。简单地询问代码并不能帮助您学习。实际上,我使用firebase数据库上传图像,但在检索图像时,所有图像都显示相同。。然后我检查了我的数据库,我看到所有的url都是一样的,我不知道为什么我上传了不同的图片。这是主要的问题,所以你可以做的是将选定的图像URI存储在本地数据库中,当用户再次启动你的应用程序时,检查你是否有任何有效的条目。然后直接在视图中显示图像。感谢Lucky提供答案,我很高兴亲爱的